如何在JavaScript中比较两个哈希图?

时间:2017-06-27 09:58:49

标签: javascript

我想比较两个包含hashmaps的对象,目标是恢复冲突的属性(两个对象中具有不同值的相同键)。例如:

Object1 : {
1234567891001 : 1
1234567891002 : 2
1234567891003 : 8
1234567891004 : 9
}

Object2 : {
1234567891001 : 1
1234567891002 : 2
1234567891003 : 3
1234567891004 : 4
}
  • 输出:列表+消息(结果列表从对象1中提取)

    1234567891003:8
    1234567891004:9

EAN 1234567891003应由3而不是8组成 EAN 1234567891004应由4而不是9

组成

2 个答案:

答案 0 :(得分:0)

不确定这是否正是您所要求的,但它至少可以帮助您:

var result = {};
var conflicts = {};
Object.keys(Object1).forEach((key) => {
  if (Object2.hasOwnProperty(key)) {
    conflicts[key] = Object1[key];
    result[key] = Object2[key];
  } else {
    result[key] = Object1[key];
  }
});

console.log("Conflicts", conflicts);
console.log("Result", result);

编辑:好的,所以在重新阅读你的问题后,我意识到你实际上想要两个列表:一个结果列表和一个冲突列表。我已经更新了我的答案。

答案 1 :(得分:0)

您可以对object1的键使用迭代方法,并使用具有差值的原则创建一个新对象。

var object1 = { 1234567891001: 1, 1234567891002: 2, 1234567891003: 8, 1234567891004: 9 },
    object2 = { 1234567891001: 1, 1234567891002: 2, 1234567891003: 3, 1234567891004: 4 },
    difference = {};

Object.keys(object1).forEach(function (k) {
    if (object1[k] !== object2[k]) {
        difference[k] = object1[k];
    }
});

console.log(difference);