2016-07-22 36 views
0

我需要循環訪問此數組並比較數組中的對象的值,但我嘗試了不同的方法,並且可以獲取它。我錯過了什麼或有沒有更好的方法來做到這一點?嘗試比較對象數組中的鍵

var all = [{a: 1, b: 2, c: 9, d: 5}, {a: 1, t: 58, r: 19, d: 5}, {a: 1, t: 14, r: 89, d: 5}]; 

for (var i = 0; i < all.length; i++) { 
for (var j = 0; j < all.length; j++) { 
    for(var key in i){ 
    for(var keyz in j){ 
     if(all[i][key] != all[j][keyz]){ 
     console.log('no same'); 
     } 
    } 
    } 
} 
} 
+1

從什麼時候是 「我」 的對象? –

+1

因此,如果它是一個索引(請參閱數字) - 「(var key in i){'語句的含義是什麼? – zerkms

+0

那麼你想從這裏得到什麼輸出? –

回答

1

試試這個:

var all = [{a: 1, b: 2, c: 9, d: 5}, {a: 1, t: 58, r: 19, d: 5}, {a: 1, t: 14, r: 89, d: 5}]; 
 
    var output = [], tempObj = {}; 
 
    for (var i = 0; i < all.length; i++) { 
 
     var object = all[i]; 
 
     for(var key in object) { 
 
      if(tempObj[key] && tempObj[key].value == object[key]) { 
 
       delete output[tempObj[key].index][key]; 
 
       delete object[key]; 
 
      } else { 
 
       tempObj[key] = { 
 
        value: object[key], 
 
        index: i 
 
       } 
 
      } 
 
     } 
 
     output[i] = object; 
 
    } 
 
    console.log(output)

+0

非常感謝。 –

-1
for (var i = 0; i < all.length; i++) { 
    for(var j = 0; j < all.length; j++) { 
     for (var key in all[i]) { 
      if (typeof all[j][key] !== "undefined" && all[i][key] == all[j][key] && i != j) { 
       console.log("same"); 
      } 
     } 
    } 
} 
+0

它有一個簡短的方法來獲得相同的結果? –

+0

@ReySomething定義「短」。 – zerkms

+0

@downvoter:請至少評論你的問題 –