js中数组对象去重

// 数组对象去重,按照某一个属性
const duplicateRemovalSimple=function(oldArr){
  let newArr=[];
  let obj={};
  oldArr.forEach(item=>{
    if(!obj[item.a]){
      newArr.push(item);
      obj[item.a]=true;
    }
  })
  return newArr
}

// 数组对象去重--对比每个属性
const duplicateRemoval=function(oldArr){
  // 数组对象去重,只适用于数组嵌套一层对象,如果下层还有嵌套关系时不适用,且内部对象的key需为字母
  // 此方法不单独对比数组内对象的某一项,而是对比对象的每一项,所有属性值都相等则视为重复
  // 对原数组进行处理,使原数组内每个对象的key值按顺序排列
  oldArr=oldArr.map(item=>{
    let copyItem={};
    let keys=Object.keys(item).sort((a,b)=>{
      // localeCompare为字母排序方法
      return a.localeCompare(b);
    });
    keys.forEach(forEachItem=>{
      copyItem[forEachItem]=item[forEachItem];
    })
    return item=copyItem;
  })
  // 对比去重
  let newArr=oldArr.map(item=>{
    return JSON.stringify(item);
  })
  newArr=[...new Set(newArr)].map(item=>{
    return JSON.parse(item);
  });
  return newArr;
}
export { debounce,throttle,duplicateRemoval,duplicateRemovalSimple };

 

posted @ 2023-02-03 19:04  Alex-Song  阅读(706)  评论(0编辑  收藏  举报