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 zweiteconsole.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 Eigenschaftena
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 mitObject.keys(a)
bekomme und dann jeden Wert mita[key]
. - ich noch verstehe nicht. Wenn ich
Object.keys(a)
bekomme ich0,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"
. Versuchenvar 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 einIdentifierName
(z.B.foo
), einStringLiteral
(z.B.'foo'
oder"foo"
) oder eineNumericLiteral
(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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie dieses:
JS:
HTML:
Es iteriert durch das array und für jedes Objekt, Durchlaufen Sie die Tasten und drücken Sie die Tasten und Werte in separate arrays.
Gibt es die for-of-Schleife vorgeschlagen, in ECMAScript 6.
Dieses feature in Firefox 31 und es ist im Lieferumfang von Chrome 38. Also die nicht, es umzusetzen. Weiß nicht über andere Browser.
Alternativ