Ich versuche derzeit, eine for in-Schleife zu ersetzen, die ich mit einer regulären for-Schleife aus Neugier, aber mit keinem Erfolg habe. Ich bekomme immer undefined
. Ist das überhaupt möglich mit JavaScript-Objekten?ersetze für mit regulär für Schleife mit Objekten
Beispiel Objekt I Schleife über:
var el = {
1: {type: "fish", commonName: "clownfish", scientificName: "sdasd", gender: "m", price: 1.99},
2: {type: "fish", commonName: "dragonfish", scientificName: "dada", gender: "f", price: 2.99}
};
Mein Arbeits in Ansatz:
for (var element in el) {
if (el[element].type === type && el.hasOwnProperty(element)) {
elementNum++;
}
}
Die einfache for-Schleife Ansatz, der bringt mich immer Cannot read property 'type' of undefined
:
for(var i = 0, x = Object.keys(el).length; i < x; i++) {
if (el[i].type === type && el.hasOwnProperty(i)) {
elementNum++;
}
}
@Matias hat die richtige Antwort, aber ich frage mich, warum Sie ein Array nicht verwenden? Werden einige Indizes übersprungen oder etwas? Ändere auch die Reihenfolge von '(el [i] .type === type && el.hasOwnProperty (i))', so dass nicht nach '.type 'gesucht wird, wenn' el [i]' nicht existiert (weil javascript aufhört, durch die 'if AND' Aussage zu schauen, wenn sie eine findet, die falsch ist. – Howzieky