使用 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"}]
应该return这个数组
[{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
) 中。
我有两个对象数组。我想使用 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"}]
应该return这个数组
[{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
) 中。