数组对象去重

143 阅读1分钟

对于对象中有重复的属性和值,将该对象从数组中去重
以下一次数组对象为例子
const arrList = [
  {id: 1, name: "zhangsan",age: "18"},
  {id: 1, name: "lisi",age: "16"}
  {id: 1, name: "wangli",age: "16"}
  {id: 1, name: "yangliu",age: "10"}
{id: 1, name: "tangran",age: "28"}
];

1、第一种方法:使用数组的reduce方法实现

let obj = {};
const newArr = arrList.reduce((pre, cur)=> {
obj[cur.age] ? "" : obj[cur.age] =true && pre.push(cur);
return pre;
},[])
console.log(newArr)

2、第二种方法: 冒泡排序法

for(let i = 0; i<arrList.length-1;i++) {
   for(let j=i+1;j<arrList.length;j++){
    if(arrList[i].age === arrList[j].age) {
     arrList.splice(j,1);
     }
    }
}
console.log(arrList);

3、第三种方法:双重循环

const newArr = [];
arrList.forEach(item =>{
   let check = newArr.every(arrItem => {
    return arrItem.age !== item.age;
   })
   check ? newArr.push(item) : "";
 }
console.log(newArr);

4、第四种方法: ES6 Map对象方法

let newMap = new Map();
for(let item of arrList) {
   if(!newMap.has(item.age)) {
  newMap.set(item.city, item);
   }
 }
let newArr = [...newMap.values()];
console.log(newArr);