2016-07-22 5 views
0

Ich muss in dieses Array Schleife und vergleichen Sie den Wert des Objekts, das im Array ist, aber ich habe verschiedene Methoden ausprobieren und ich kann es bekommen. Fehle ich etwas oder gibt es einen besseren Weg?Versuchen Sie, Schlüssel in einem Array von Objekten zu vergleichen

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

Seit wann ist "i" ein Objekt? –

+1

Also, wenn es ein Index ist (siehe eine Zahl) - was bedeutet die Anweisung 'for (var key in i) {'? – zerkms

+0

also was ist die Ausgabe, die Sie von hier wollen? –

Antwort

1

Try this:

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

Vielen Dank. –

-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

ist da ein kurzer Weg dahin und das gleiche Ergebnis? –

+0

@ReySomething definieren "kurz". – zerkms

+0

@ downvoter: Bitte zumindest kommentieren, was Ihr Problem ist –