添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

根据ID合并两个数组

需求:两个数组,如果id相同则合并到一起,id不一样则添加

let arr=[{id:1,name:'dylan'},{id:2,name:'kebi'}]
let arr1=[{id:1,position:'ceo'},{id:3,position:'sales'}]
let list=arr.reduce((pre,cur)=>{
  let target=pre.find(ee=>ee.id == cur.id)
  if(target){
    Object.assign(target,cur)
  }else{
    pre.push(cur)
  return pre
},arr1)
console.log(list)  
{ id: 1, position: 'ceo', name: 'dylan' },
{ id: 3, position: 'sales' },
{ id: 2, name: 'kebi' }

解析:
arr.reduce((pre,cur)=>{},arr1)
arr1是初始值,pre是累计值,cur是当前传入的值,所以pre的初始值就是arr1,cur的初始值是arr的第一个元素
find方法返回数组中第一个符合的元素,如果没有符合的返回undefined
target的值就是判断下累计的数组里面有没有和当前元素id一样的,一样的话把pre里面的这个元素赋值给target,没有的话就赋值为undefined
Object.assign方法拷贝cur对象里面的值到目标对象也就是target里面,也就是如果target对象里面有cur对象里面的属性就覆盖,如果没有就添加
if…else…的意思就是如果在arr里面找到了id和arr1一样的就合并,没有找到的话就push添加进去
最后返回新数组

根据ID合并两个数组需求:两个数组,如果id相同则合并到一起,id不一样则添加let arr=[{id:1,name:'dylan'},{id:2,name:'kebi'}]let arr1=[{id:1,position:'ceo'},{id:3,position:'sales'}]let list=arr.reduce((pre,cur)=>{ let target=pre.find(ee=>ee.id == cur.id) if(target){ Object.as
可以通过上次的需求,我们通过 TYPE 和 REMARK 两个 key 对应的 value 共同决定是否合并属性,我们是可以将两个属性进行串联成一个新的 key,如果这个 key 相同,即两个条件同时满足。这里不仅仅合并相邻的数据,不相邻的同种 属性也会进行合并。 let data = [ {TYPE: 01, REMARK: 休假}, {TYPE: 03, REMARK: 在班}, {TYPE: 03, REMARK: 在班}, {TYPE: 02, REMARK: 上海出差}, {TYPE:
通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。 在日常开发的时候,我们有时候会遇到这样的需求, 要求把具有相同属性名的对象进行合并,如下例子所示 <script> var arrayName = [{ "id":"1", "name":"小明", "course":"语文" "id":"2", "name":"小张", "course":"政治"
已知 array1 = [{id: 1, num:10}, {id: 2, num:20}] 和 array2= [{id: 2}, {id: 3}] 两个数组,如何得到newArray =[{id: 2, num: 20}, {id: 3}] 代码如下: const newArray = array2.map(item => { const data = array1.find(i => item.id === i.id) return { <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="...
注意:arr1 是基础 把arr2合并到arr1中 ,汇成一个总的arrs 这个arr1中的id 和 arr2中的periodId 是一一对应的。 let arr1 = [ {id:64,period:"10:00"}, {id:65,period:"12:00"}, {id:66,period:"14:00"}, {id:67,period:"18:00"}, let arr2 = [ period:'10:00', periodId.
{ id: 1, prelist: [{ a: 1, b: 2 }] }, { id: 2, prelist: [{ a: 1, b: 2 }] }, { id: 3, prelist: [{ a: 1, b: 2 }] }, let arr2 = [ { ids: 1, list: [{ c: 1, d: 2 }] }, { ids: 2, list: [{ c: 1, d: 2 }] }, { ids:
qq_38135482: 我也这样配置的报错了 Module build failed (from ./node_modules/postcss-loader/dist/cjs.js): ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'root'. These properties are valid: object { postcssOptions?, execute?, sourceMap?, implementation? } navicat连接远程数据库mysql报错2013解决方法 weixin_43831478: WordPress Rest API访问失败404(访问wp-json) 压力也没那么大: 感谢,有用