我正在尝试使用array.filter()
来比较两个数组,并根据某个属性(id)与它们不具有的值分离出两个数组共有的值没有共同点。我想要推送到新数组 (recordsToUpdate) 的通用 ID。我想将 arr2 中的剩余元素推送到新数组 (recordsToInsert)。
我尝试过的方法不起作用。我怎样才能重新修改它以获得我想要的结果? - (在此示例中,应该是一个包含 1 个公共(public)元素 {id: 3}
的数组,以及另一个包含 arr2
中剩余元素的数组):
const arr1 = [{id: 1}, {id: 2}, {id: 3}];
const arr2 = [{id: 3}, {id: 4}, {id: 5}];
let recordsToUpdate = [];
let recordsToInsert = [];
recordsToUpdate = arr1.filter(e => (arr1.id === arr2.id));
recordsToInsert = ?
console.log('recordsToUpdate: ', recordsToUpdate);
console.log('recordsToInsert: ', recordsToInsert);
期望的结果应该是:
recordsToUpdate = [{id: 3}];
recordsToInsert = [{id: 4}, {id: 5}];
最佳答案
试试这个,它使用 Array.prototype.find测试 arr2
中是否存在具有给定 id
的对象:
const arr1 = [{id: 1}, {id: 2}, {id: 3}];
const arr2 = [{id: 3}, {id: 4}, {id: 5}];
const recordsToUpdate = arr1.filter(e => arr2.find(obj => obj.id === e.id) !== undefined);
const recordsToInsert = arr1.filter(e => arr2.find(obj => obj.id === e.id) === undefined);
console.log('recordsToUpdate: ', recordsToUpdate);
console.log('recordsToInsert: ', recordsToInsert);
关于javascript - 使用 Array.filter 比较两个数组并根据共同值推送到新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887244/