基于关键字筛选对象数组



我有两个对象数组,如下所示:

第一个阵列:

const arr1 = [
{
name: 'Jackson',
email: 'jack@email.com',
_id: '634793ba0d09e246dbed7988'
},
{
name: 'Carlson',
email: 'carl@email.com',
_id: '633c33880d09e246dbed6e3f'
}
]

第二个阵列:

const arr2 = [
{
name: 'Samson',
email: 'sam@gmail.com',
_id: '"634e878db465120ccc6ca81f'
},
{
name: 'Jennifer',
email: 'jenny@abc.com',
_id: '633c339c0d09e246dbed6eeb'
},
{
name: 'Carlson',
email: 'carl@email.com',
_id: '633c33880d09e246dbed6e3f'
}
]

现在,我想根据_id过滤我的第二个数组。如果id相同,则从数组中删除该对象。

预期结果应为:

[
{
name: 'Samson',
email: 'sam@gmail.com',
_id: '"634e878db465120ccc6ca81f'
},
{
name: 'Jennifer',
email: 'jenny@abc.com',
_id: '633c339c0d09e246dbed6eeb'
}
]

以下是我的方法:

this.finalArray = this.arr2.filter(item => {
this.arr1.forEach(other=> {
if (item._id !== other._id) {
return item;
}
});
});

但我得到了一个空数组。我怎样才能做到这一点?

const arr1 = [
{
name: 'Jackson',
email: 'jack@email.com',
_id: '634793ba0d09e246dbed7988'
},
{
name: 'Carlson',
email: 'carl@email.com',
_id: '633c33880d09e246dbed6e3f'
}
]
const arr2 = [
{
name: 'Samson',
email: 'sam@gmail.com',
_id: '"634e878db465120ccc6ca81f'
},
{
name: 'Jennifer',
email: 'jenny@abc.com',
_id: '633c339c0d09e246dbed6eeb'
},
{
name: 'Carlson',
email: 'carl@email.com',
_id: '633c33880d09e246dbed6e3f'
}
]
const result = arr2.filter(item => !arr1.find(obj => obj._id === item._id));
console.log(result)

最新更新