如何使用angular.foreach比较两个javascript数组

时间:2016-09-08 07:26:44

标签: javascript angularjs

我有两个javascript对象

    var obj1= {
           key1:'value1',
           key2:'value2'
    };

并且

 var obj2= {
           key1:'value1',
           key2:'someOtherValue'
    };

正如你所看到的那样,两个对象在key2有一个区别,我想要一个角度的foreach循环,它可以检查两个对象,并且可以返回一个控制台消息“Difference is at key2”。我已经尝试了角度foreach但它不允许多个对象,所以我该如何比较?

3 个答案:

答案 0 :(得分:0)

请不要使用angular.foreach。

  • Javascript for速度更快。
  • 你无法在angular.foreach中使用break。
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;
            }
        }
    })
})