javascript - 如何获取没有 ID 的对象数组之间的差异

标签 javascript arrays

类似于this questionthis 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/

相关文章:

ios - 如何从 uint8_t 数组获取 "remove"数组元素或 ge 范围?

java - 从 Java 中不断变化的 URL 解析 JSON 数组

javascript - 从数组中删除单个单词条目

javascript - NAVLINK 的 React Route 收到非 bool 属性的 TRUE

java - 向数组添加一个值?

c - 从 C 文件中读取输入时反转数组的问题

javascript - 操纵由 jQuery 添加的元素

javascript - 在 jQuery Mobile 中动态添加可折叠集和嵌套列表

javascript - Firestore 查询不起作用

javascript - 如何在 typescript 组件中调用 javascript 警报