对象数组去重五种方式

1.双for循环去重

//方式一 双for循环去重
let arrObj=[
  {name:"xiangming",age:18,id:"001"},
  {name:"xianglan",age:19,id:"002"},
  {name:"xiangzhang",age:18,id:"001"},
  {name:"xianghua",age:20,id:"003"},
  {name:"xianggao",age:21,id:"003"},
  {name:"xiangdu",age:18,id:"001"}
]

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

2.map方式

//方式一 Map()去重
let arrObj=[
  {name:"xiangming",age:18,id:"001"},
  {name:"xianglan",age:19,id:"002"},
  {name:"xiangzhang",age:18,id:"001"},
  {name:"xianghua",age:20,id:"003"},
  {name:"xianggao",age:21,id:"003"},
  {name:"xiangdu",age:18,id:"001"}
]
let map=new Map();
for (let i = 0; i < arrObj.length; i++) {
  if(!map.has(arrObj[i].id)){
    map.set(arrObj[i].id);
    i--;
  }else{
    arrObj.splice(i,1)
  }
}
console.log(arrObj);

3.forEach与includes去重

//方式三  forEach与includes去重
let arrObj=[
  {name:"xiangming",age:18,id:"001"},
  {name:"xianglan",age:19,id:"002"},
  {name:"xiangzhang",age:18,id:"001"},
  {name:"xianghua",age:20,id:"003"},
  {name:"xianggao",age:21,id:"003"},
  {name:"xiangdu",age:18,id:"001"}
]
let newArrId=[];
let newArrObj=[];
arrObj.forEach(item=>{
  if(!newArrId.includes(item.id)){
    newArrId.push(item.id)
    newArrObj.push(item)
  }
})
console.log(newArrObj);

4.indexof去重

//方式四  indexof去重
let arrObj=[
  {name:"xiangming",age:18,id:"001"},
  {name:"xianglan",age:19,id:"002"},
  {name:"xiangzhang",age:18,id:"001"},
  {name:"xianghua",age:20,id:"003"},
  {name:"xianggao",age:21,id:"003"},
  {name:"xiangdu",age:18,id:"001"}
]
let newArrId=[];
let newArrObj=[];
//方式4.1
arrObj.forEach(item=>{
   if(newArrId.indexOf(item.id)==-1){
     newArrId.push(item.id)
     newArrObj.push(item)
   }
 })
console.log(newArrObj);
//方式4.2
for (let i = 0; i < arrObj.length; i++) {
  if(newArrId.indexOf(arrObj[i].id)==-1){
    newArrId.push(arrObj[i].id)
  }else{
    arrObj.splice(i,1)
    i--;
  }
}
console.log(arrObj);

5.对象访问属性的方法

//方式五 对象属性方式
let arrObj=[
  {name:"xiangming",age:18,id:"001"},
  {name:"xianglan",age:19,id:"002"},
  {name:"xiangzhang",age:18,id:"001"},
  {name:"xianghua",age:20,id:"003"},
  {name:"xianggao",age:21,id:"003"},
  {name:"xiangdu",age:18,id:"001"}
]
let newArr=[]
let obj={}
//方式5.1
for (let i= 0; i< arrObj.length; i++) {
  if(!obj[arrObj[i].id]){
    obj[arrObj[i].id]=true
    newArr.push(arrObj[i])
  }
}
console.log(newArr);

//方式5.2
for (let i= 0; i< arrObj.length; i++) {
  if(!obj[arrObj[i].id]){
    obj[arrObj[i].id]=true
  }else{
    arrObj.splice(i,1);
    i--;
  }
}

console.log(arrObj);

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱在 旅途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值