我有两个javascript对象
var obj1= {
key1:'value1',
key2:'value2'
};
并且
var obj2= {
key1:'value1',
key2:'someOtherValue'
};
正如你所看到的那样,两个对象在key2
有一个区别,我想要一个角度的foreach循环,它可以检查两个对象,并且可以返回一个控制台消息“Difference is at key2”。我已经尝试了角度foreach但它不允许多个对象,所以我该如何比较?
答案 0 :(得分:0)
请不要使用angular.foreach。
for
速度更快。 var diffs = [];
for (var key in obj1) {
if obj1[key] !== obj2[key]{
diffs.append([key]);
}
}
console.log(diffs)
假设两个字典都有相同的密钥..
答案 1 :(得分:0)
在普通的Javascript中,您可以使用Map
。
var obj1 = { key1: 'value1', key2: 'value2' },
obj2 = { key1: 'value1', key2: 'someOtherValue' },
map = new Map();
Object.keys(obj1).forEach(k => map.set(k, obj1[k]));
Object.keys(obj2).forEach(k => map.get(k) !== obj2[k] && console.log(k + ' is different'));

答案 2 :(得分:0)
这是带有角度foreach循环的纯angularjs代码。
var keepGoing = true;
angular.forEach(obj1, function(value, key){
angular.forEach(obj2, function(value2, key2){
if(keepGoing) {
if(value == value2){
keepGoing = true;
}
else{
console.log('Difference is at', key2)
keepGoing = false;
}
}
})
})