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

how to compare two javascript array using angular.foreach

本文关键字:两个 javascript 数组 何使用 angular foreach 比较      更新时间:2023-09-26

我有两个javascript对象

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

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

正如你所看到的,在key2有一个差异b/w两个对象,我想要一个有角度的foreach循环,它可以检查两个对象,并可以返回控制台消息"差异是在key2"。我已经尝试过角foreach,但它不允许多个对象,所以我应该如何比较?

不要使用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)

假设两个字典有相同的键…

在普通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'));

下面是带有angular 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;
            }
        }
    })
})