JS对象两个对象数组去重问题

for(let i of A){
            if(B.indexOf(i) === -1){
              C.push(i)
            }
          }

请问一下大家两个对象数组A和B,去除A中B含有的元素,上述代码判断某个值相同是:对象有很多属性是每个属性都要对上吗?

对象数组查找对象不能直接使用indexOf,因为即使两个对象即使字段值都一样,但是它们的地址不一样

let arr=[
{id:'A1',age:12},
{id:'A2',age:12}
];
let obj={id:'A1',age:12}
console.log(arr.indexOf(obj))

img

一般会给对象设置一个唯一标识字段,例如上述例子的id,然后
你要实现的功能可以这么写


let arr=[
{id:'A1',age:12},
{id:'A2',age:12}
];
let arr2=[
{id:'A1',age:12}
];
let arr3=[];
for(let i in arr){
    if(arr2.filter(x=>x.id==arr[i].id).length==0){
        arr3.push(arr[i]);
    }
}

img