Ich möchte durch die in einem Array enthaltenen Objekte blättern und die Eigenschaften jedes einzelnen ändern. Wenn ich das mache:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
Die Konsole sollte jedes Objekt im Array aufrufen, oder? Tatsächlich wird jedoch nur das erste Objekt angezeigt. Wenn ich das Array außerhalb der Schleife auf einer Konsole protokolliere, werden alle Objekte angezeigt, sodass definitiv mehr darin enthalten sind.
Wie auch immer, hier ist das nächste Problem. Wie greife ich über die Schleife beispielsweise auf Object1.x im Array zu?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Dies gibt "undefiniert" zurück. Wieder sagt mir das Konsolenprotokoll außerhalb der Schleife, dass alle Objekte Werte für "x" haben. Wie greife ich in der Schleife auf diese Eigenschaften zu?
Mir wurde an anderer Stelle empfohlen, separate Arrays für jede der Eigenschaften zu verwenden, aber ich möchte sicherstellen, dass ich diese Möglichkeit zuerst ausgeschöpft habe.
Danke dir!
quelle
j
ist eine Zahl. Sie haben es oben in Ihrer Schleife definiert.myArray
ist das doch nicht wirklich nur ein Array?#forEach
funktioniert. Aber die Frage war ungefähr für Schleife.Antworten:
Verwenden Sie forEach als integrierte Array-Funktion.
Array.forEach()
::quelle
forEach
wird in IE 9 nicht unterstützt. Beschuldigen Sie mich nicht! Das Produkt meines Arbeitgebers unterstützt das!yourArray
von so etwas kommendocument.getElementsByClassName
würden, wäre dies eine HTMLCollection, kein Array. Dann könnte diese Frage hilfreich sein.forEach
Blockiert und unterstützt nicht.await
Diefor...of
Schleife wird.Einige Anwendungsfälle für das Durchlaufen eines Arrays auf funktionale Programmierweise in JavaScript:
1. Durchlaufen Sie einfach ein Array
Hinweis: Array.prototype.forEach () ist streng genommen keine funktionale Methode, da die Funktion, die als Eingabeparameter verwendet wird, keinen Wert zurückgeben soll, der daher nicht als reine Funktion angesehen werden kann.
2. Überprüfen Sie, ob eines der Elemente in einem Array einen Test besteht
3. In ein neues Array transformieren
Hinweis: Die map () -Methode erstellt ein neues Array mit den Ergebnissen des Aufrufs einer bereitgestellten Funktion für jedes Element im aufrufenden Array.
4. Fassen Sie eine bestimmte Eigenschaft zusammen und berechnen Sie ihren Durchschnitt
5. Erstellen Sie ein neues Array basierend auf dem Original, ohne es jedoch zu ändern
6. Zählen Sie die Nummer jeder Kategorie
7. Rufen Sie eine Teilmenge eines Arrays basierend auf bestimmten Kriterien ab
Hinweis: Die filter () -Methode erstellt ein neues Array mit allen Elementen, die den von der bereitgestellten Funktion implementierten Test bestehen.
8. Sortieren Sie ein Array
9. Suchen Sie ein Element in einem Array
Die Methode Array.prototype.find () gibt den Wert des ersten Elements im Array zurück, das die bereitgestellte Testfunktion erfüllt.
Verweise
quelle
const people = [ {name: "john", age:23}, {name: "john", age:43}, {name: "jim", age:101}, {name: "bob", age:67} ]; const sortByAge = people.map(p => { console.log(p.name) return p }).sort(function (p1, p2) { return p1.age - p2.age; }); console.log(sortByAge);
Sie können eine for..of-Schleife verwenden , um ein Array von Objekten zu durchlaufen .
Eines der besten Dinge an
for..of
Schleifen ist, dass sie mehr als nur Arrays durchlaufen können. Sie können über jede Art von Iterable iterieren, einschließlich Karten und Objekten. Stellen Sie sicher, dass Sie einen Transpiler oder etwas wie TypeScript verwenden, wenn Sie ältere Browser unterstützen müssen.Wenn Sie über eine Map iterieren möchten, ist die Syntax weitgehend dieselbe wie oben, außer dass sowohl der Schlüssel als auch der Wert behandelt werden.
Ich benutze
for..of
Schleifen für so ziemlich jede Art von Iteration, die ich in Javascript mache. Eines der coolsten Dinge ist außerdem, dass sie auch mit async / await arbeiten.quelle
quelle
Hier ist ein Beispiel, wie du es machen kannst :)
quelle
track
Eigenschaft für jedes Element erhalten und ihn einer Variablen zuweisen, die in einem anderen Teil des Codes verwendet oder interpoliert werden soll?Das Durchlaufen einer Reihe von Objekten ist eine ziemlich grundlegende Funktionalität. Das funktioniert bei mir.
quelle
myArray[j.x]
ist logisch falsch.Verwenden Sie
(myArray[j].x);
stattdessenquelle
Mit der forEach-Methode seit ES5 + ist das ganz einfach. Sie können jede Eigenschaft jedes Objekts in Ihrem Array direkt ändern.
Wenn Sie für jedes Objekt auf eine bestimmte Eigenschaft zugreifen möchten:
quelle
Hier ist eine andere Möglichkeit, ein Array von Objekten zu durchlaufen (für diese müssen Sie die jQuery-Bibliothek in Ihr Dokument aufnehmen).
quelle
$.each
Methode zu verwenden .Das würde funktionieren. Durchlaufendes Array (yourArray). Durchlaufen Sie dann die direkten Eigenschaften jedes Objekts (eachObj).
quelle
Array-Objektiteration mit jQuery (verwenden Sie den zweiten Parameter, um die Zeichenfolge zu drucken).
quelle
Dies ist einer der Wege, wie ich es erreichen konnte.
quelle
Die akzeptierte Antwort verwendet die normale Funktion. Veröffentlichen Sie also denselben Code mit geringfügigen Änderungen mithilfe der Pfeilfunktion auf forEach
Auch in $ .each können Sie die Pfeilfunktion wie unten verwenden
quelle
Sei vorsichtig mit den hinteren Zecken (`)
quelle
Das könnte jemandem helfen. Vielleicht ist es ein Fehler in Node.
Das funktioniert nicht:
Aber das funktioniert ...
Das funktioniert auch ...
ABER einfach die Reihenfolge umzukehren funktioniert nicht. Ich vermute, es gibt hier eine Art interne Optimierung, die Node kaputt macht.
Der Fehler besagt, dass das Array undefiniert ist, aber nicht: - / Node v11.15.0
quelle