类似于this question和 this question ,我有一个对象数组,我想比较它们,然后得到这两个对象之间的差异。遗憾的是,我的对象不包含 ID(并且在我需要调用该函数的状态下,我也不能只为对象提供 ID。)。我上面链接的示例依赖于使用对象 id 进行比较,所以我无法使用这些解决方案。我的数组如下所示:
var array1 = [{person1ID: 46, person2ID: 47, value: "test"}, {person1ID: 38, person2ID: 56, value: "test2"}];
var array2 = [{person1ID: 46, person2ID: 47, value: "test"}];
在此示例中,我想获取对象 {person1ID: 38, person2ID: 56, value: "test2"}
,因为它在 array1 中,但不在 array2 中。
如果数组中的对象没有 ID,有什么方法可以比较两个数组并获取差异吗?
最佳答案
您可以使用嵌套方法,根据属性检查第一个数组的每个对象和第二个数组的每个对象。
function getDifference(array1, array2) {
var keys = ['person1ID', 'person2ID', 'value'];
return array1.filter(function (a) {
return !array2.some(function (b) {
return keys.every(function (k) {
return a[k] === b[k];
});
});
});
}
console.log(getDifference(
[{person1ID: 46, person2ID: 47, value: "test"}, {person1ID: 38, person2ID: 56, value: "test2"}],
[{person1ID: 46, person2ID: 47, value: "test"}]
));
关于javascript - 如何获取没有 ID 的对象数组之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45374090/