javascript - 如何找到两个 JavaScript 对象数组之间的差异?

标签 javascript arrays javascript-objects difference data-manipulation

我有两个 JavaScript 数组 orig(原始对象数组)和 update(更新后的 orig 对象数组),它们具有相同的长度并包含对象,并且我想输出每对对象之间的差异。

例子:

var orig = [{enabled:"true", name:"Obj1", id:3},{enabled:"true", name:"Obj2", id:4}]; 

var update = [{enabled:"true", name:"Obj1", id:3}, {enabled:"true", name:"Obj2-updated", id:4}];

输出应该是:name:"Obj2-updated"

我实现了一些东西,但它需要优化......

for(var prop=0; prop<orig.length; prop++) {
  for(prop=0; prop<update.length; prop++) {
    if(orig[prop].enabled != update.enabled) { console.log(update.enabled) }
    if(orig[prop].name != update[prop].name) { console.log(update[prop].name) }
    if(orig[prop].id != update[prop].id) { console.log(update[prop].id) }
  }
}

最佳答案

您可以过滤键并获得包含更新键的结果集。

var orig = [{ enabled: "true", name: "Obj1", id: 3 }, { enabled: "true", name: "Obj2", id: 4 }],
    update = [{ enabled: "true", name: "Obj1", id: 3 }, { enabled: "true", name: "Obj2-updated", id: 4 }],
    difference = [];

orig.forEach(function (a, i) {
    Object.keys(a).forEach(function (k) {
        if (a[k] !== update[i][k]) {
            difference.push({ id: update[i].id, key: k, value: update[i][k], index: i });
        }
    });
});

console.log(difference);

关于javascript - 如何找到两个 JavaScript 对象数组之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074429/

相关文章:

javascript:调试器和实际结果之间的 'this' 值不同

javascript - 单独(组织)快速路线

javascript - 使用 javascript 中的 sort 方法对数组进行排序

arrays - Swift 检查数组是否包含在另一个数组中

javascript - 如何过滤具有多个层的对象

JavaScript - 使用键数组从嵌套对象中检索值

javascript - 如何从 App.vue 访问组件属性

javascript - 如何设置复杂的 jquery 函数?

arrays - 具有嵌入式数组的JSON对象保存在Controller中

java - 使用java中的比较器对二维数组的每一列进行排序