数组对象的合并去重,常用方法

前端处理数据的时候,常见的数组对象,合并并且去重,两个数据如下:

let json1=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:3,name:"ccc"}, ] let json2=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:4,name:"ddd"}, ]

方法一:

双循环,遍历添加
for (var obj in json1){//临时选择数据
var includeThis = false;
for(var dbj in json2){ //右侧table里的数据
if(json1[obj].id==json2[dbj].id){
includeThis=true;
}
}
if(includeThis==false){
json.push(storageArea[obj]);//把当前临时数据的这一条放到右侧table的数据里
}
}

也可以先合并在去重
let json = json1.concat(json2); //两个数组对象合并

let newJson = []; //盛放去重后数据的新数组

for(item1 of json){ //循环json数组对象的内

  let flag = true; //建立标记,判断数据是否重复,true为不重复

  for(item2 of newJson){ //循环新数组的内容

    if(item1.id==item2.id){ //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false

      flag = false;

    }

  }

  if(flag){ //判断是否重复

    newJson.push(item1); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。

  }

}

console.log("newJson",newJson);

方法二    javascript 数组的高阶函数reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

单个数组对象去重
let b = [{ id: '4', result: '第三' }, { id: '2', result: '第四' }, { id: '2', result: '第二' }]
let d = []
let hash = {}
d = b.reduce((item, next) => {
hash[next.id] ? '' : hash[next.id] = true && item.push(next)
return item
}, [])
console.log(d, '看看看')

 

用上面的两个数组对象来实现

多个数组对象去重  
let newDatas = [...this.json1, ...this.json2];
let d = []
let hash = {}
d = newDatas.reduce((item, next) => {
   hash[next.id] ? '' : hash[next.id] = true && item.push(next)
   return item
}, [])
console.log(d);

 

posted @ 2021-03-01 18:18  zhang305  阅读(4781)  评论(0编辑  收藏  举报