Beste Weg, um die Iteration array von hashes javascript

Wenn ich ein array von hashes, was ist der beste Weg, zu iterieren?

var a = [{"a": "1"}, {"b": "2"}, {"c": "3"}]

for(var i in a) {
  console.log(a[i]) //prints each hash
  console.log(i)    //prints the index
}

Wenn ich will, zu bekommen, a,b,c oder 1,2,3 was ist der beste Weg?

Dank

  • Sie haben zu brechen, neben den Hashwert mit .keys() oder .values().
  • [{a: "1"}, {b: "2"}, {c: "3"}] ist kein gültiges JavaScript. Die Variablen a, b und c nicht initialisiert werden. Es sollte [{"a": "1"}, {"b": "2"}, {"c": "3"}]. Die zweite console.log außerhalb der for-Schleife geschweifte Klammern benutzen { ... }.
  • Sie sollten nie Durchlaufen, ein array mit for (var i in a) im Javascript-denn das geht alle aufzählbaren Eigenschaften a die können mehr Elemente als nur die array-Elemente.
  • Sorry, die syntax war nicht mein Punkt. Fixiert es. Also wenn ich die Tasten Object.keys(a) returns 0,1,2...
  • Fixieren Sie Ihre Daten-Struktur. Es sollte wohl sein: var a = {"a": "1", "b": "2", "c": "3"} und dann können Sie einfach Holen Sie sich den Schlüssel mit Object.keys(a) bekomme und dann jeden Wert mit a[key].
  • ich noch verstehe nicht. Wenn ich Object.keys(a) bekomme ich 0,1,2
  • [{a: "1"}, {b: "2"}, {c: "3"}] ist sehr gültiges JavaScript. Die Schlüssel in einem Objekt-literal Bezeichner-Namen, strings oder zahlen sein.
  • Hast du wirklich ändern, die Struktur zu dem, was @jfriend00 vorgeschlagen? Ich bezweifle es.
  • Wenn Sie das tun, was ich vorgeschlagen, Sie erhalten ["a","b","c"] für die Schlüssel. Siehe hier für die Arbeit demo: jsfiddle.net/jfriend00/dt7Le6h9
  • probiert mit IE < 9 und überrascht sein ....
  • Ich kann var a = [{a: 42}]; alert(a[0].a); in IE6 ohne Probleme. Aber selbst, wenn es nicht funktioniert, ändert es nichts an der Tatsache, dass Sie behauptete, dass ein Gültiger JS ist ungültig.
  • da per definition die property-Namen müssen in Anführungszeichen gesetzt werden. "Funktioniert" ist nicht "Gültig". Ich fand keine definition, wo eine wörtliche a als Eigenschaft ist ausdrücklich erlaubt, aber immer "a". Versuchen var a = { unknownprop: "value" } und google für "JSON-Syntax-Definition"
  • Oh, Sie sind verwirrend, JSON mit JavaScript Objekt-Literale! Sie sehen sich ähnlich, haben aber unterschiedliche syntax (z.B. JSON hat keine syntax für Funktionen). Lassen Sie mich verweisen Sie auf die JavaScript-Spezifikation. Wie Sie sehen können, eine PropertyName kann entweder ein IdentifierName (z.B. foo), ein StringLiteral (z.B. 'foo' oder "foo") oder eine NumericLiteral (z.B. 42).
  • { unknownprop: "value" } wäre ungültig, JSON, aber ein Gültiger JS-Objekt-literal. Und ja, in diesem Kontext "funktioniert" bedeutet "gültig" für mich, weil "ungültig" JavaScript wirft einen syntax-Fehler.

Schreibe einen Kommentar