繁体   English   中英

使用JavaScript比较2个数组并创建一个新的对象数组,其中不包含按id字段匹配的对象

[英]Using JavaScript to compare 2 arrays and create a new array of objects which does not contains the objects that match by id field

我有两个对象数组。 我想使用JavaScript创建一个新数组,其中不包含按id字段匹配的对象。

第一个数组

[{id: 1, name: "Jo"},{id: 2, name: "Pat"},{id: 3, name: "Mike"}]

第二个数组

[{id: 1, name: "Jo"},{id: 2, name: "Pat"},{id: 3, name: "Mike"}, {id: 4, name: "Mitch"}, {id: 5, name: "Karl"}]

应该返回这个数组

[{id: 4, name: "Mitch"}, {id: 5, name: "Karl"}]

如果可能,使用lodash会更好。 请注意,第一个数组始终小于或等于第二个数组,并且只能包含第二个数组中的对象。

所以我尝试了以下...

let newArray = _.reject(secondArray, {'id': firstArray});

没有成功,我需要语法帮助。

非常感谢您的时间和帮助。

简短而甜美。 (假设one保存第一个数组, two保存第二个数组)

var oneIDs = one.map(function (a) {return a.id});

var result = two.filter(function (a) {
    return oneIDs.indexOf(a.id) === -1;
});

说明:

首先,获取第一个数组中所有元素的ID的查找数组。

其次,获取第二个数组中ID不在查找数组中的所有元素( oneIDs )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM