gpt4 book ai didi

javascript - 使用 Array.filter 比较两个数组并根据共同值推送到新数组

转载 作者:行者123 更新时间:2023-11-28 14:10:07 25 4
gpt4 key购买 nike

我正在尝试使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com