2016-09-08 6 views
1

I持っている2つのJavaScriptオブジェクトangular.foreach

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

そして

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

あなたはkey2でbの両方のオブジェクトのw/1差がある見ることができるように、I両方のオブジェクトをチェックすることができ、 "Difference is at key2"というコンソールメッセージを返すことができる角度のforeachループが必要です。私はすでに角度のあるforeachを試しましたが、複数のオブジェクトを許可していないので、どのように比較すればいいですか?

+0

同じキーの値を比較したいですか?なぜ角度? –

+0

可能な複製:http://stackoverflow.com/questions/29133885/angularjs-compare-two-arrays – Kafo

+0

私は既に角度jsで作業しています、obj1はデータベースから来て、obj2はユーザー入力です。 –

答えて

0

angular.foreachは使用しないでください。

  • Javascript forが高速です。
  • あなたはangular.foreachでブレークを使用することはできません。両方の辞書が同じキーを持っていると仮定すると

var diffs = []; 
for (var key in obj1) { 
    if obj1[key] !== obj2[key]{ 
    diffs.append([key]); 
    } 
} 
console.log(diffs) 

...平野JavaScriptで

0

、あなたはそれのため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'));

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; 
      } 
     } 
    }) 
}) 
関連する問題