我想比较两个包含hashmap的对象,目的是恢复相互冲突的属性(在两个对象中具有不同值的相同键)。例如:
Object1 : {
1234567891001 : 1
1234567891002 : 2
1234567891003 : 8
1234567891004 : 9
}
Object2 : {
1234567891001 : 1
1234567891002 : 2
1234567891003 : 3
1234567891004 : 4
}EAN 1234567891003应该由3而不是8组成,EAN 1234567891004应该由4而不是9组成。
发布于 2017-06-27 10:06:48
不确定这是否正是你所要求的,但它至少应该对你有帮助:
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);编辑:好的,在重新阅读你的问题之后,我意识到你实际上想要两个列表:一个结果列表和一个冲突列表。我更新了我的答案。
发布于 2017-06-27 10:54:21
您可以使用对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);
https://stackoverflow.com/questions/44777381
复制相似问题