我想比较两个包含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
组成答案 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);