判断两个对象数组是否有相同元素,对象数组合并去重

let arr = [{name:'cat',sex:'0'}, {name:'dog',sex:'0'}, {name:'bat',sex:'0'}];
let arr2 = [{name:'cat',sex:'1'}, {name:'dog',sex:'0'}]

一、循环判断arr与arr2是否有相同元素,相同的添加isdelete:false字段,不同添加isdelete:true

 arr.map((item) => {
    let bool = arr2.findIndex((it) => {
      return item.name == it.name
    })
    if (bool !== -1) {
      item.isdelete = false
    } else {
      item.isdelete = true
    }
  })

二、循环判断arr与arr2是否有相同元素,不同的使用arr2里的元素

const arryList=[];
arr.foreach((item)=>{
    let includthis=false;
    let list={};
    arr2.forEach((ele)=>{
        if(item.name===ele.name){
            includthis=true;
            list = item;
            list.sex=ele.sex;
            arryList.push(list);
        }
    }); 
    if(includthis===flase){
        arryList.push(item);
    }
});

三、 arr与arr2合并去重

1. 先合并再去重

let json = arry.concat(ayy2); //两个数组对象合并
let newJson = []; //盛放去重后数据的新数组

for(item1 of json){ 
  let flag = true; //建立标记,判断数据是否重复,true为不重复
  for(item2 of newJson){ 
    if(item1.id==item2.id){ //比较json数组对象的内容与新数组的内容作,相同的话,改变标记为false
      flag = false;
    }
  }
  if(flag){ //判断是否重复
    newJson.push(item1); //不重复的放入新数组。
  }

}

// const res = new Map();
// return arr.filter((arr) => !res.has(arr.name) && res.set(arr.name, 1))

2. 遍历添加不重复的 

for (var obj in arry){//临时选择数据
     var includeThis = false;
    for(var dbj in arry2){ //右侧table里的数据
        if(arry[obj].id==arry2[dbj].id){
            includeThis=true;
        }
    }
    if(includeThis==false){
        json.push(arry[obj]);//把当前临时数据的这一条放到右侧table的数据里
    }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值