[英]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.