Frage

Ich habe mich immer gefragt, was der Unterschied zwischen ihnen war. Sie alle scheinen das Gleiche zu tun ...

War es hilfreich?

Lösung

Die Differenz liegt in den Rückgabewerten.

.map() Gibt eine neue Reihe von Objekten zurück Erstellt durch Maßnahmen zum Originalartikel.

.every() Gibt einen Booleschen zurück - wahr, wenn jedes Element in diesem Array die bereitgestellte Testfunktion erfüllt. Ein wichtiger Unterschied mit .every() ist, dass die Testfunktion möglicherweise nicht immer für jedes Element im Array aufgerufen wird. Sobald die Testfunktion für ein Element falsch zurückgibt, werden keine Array -Elemente mehr iteriert. Daher sollte die Testfunktion normalerweise keine haben Nebenwirkungen.

.forEach() Gibt nichts zurück - Es iteriert das Array, das eine bestimmte Aktion für jedes Element im Array ausführt.

Lesen Sie über diese und die vielen anderen Array -Iterationsmethoden bei MDN.

Andere Tipps

Die Antwort von Gilly3 ist großartig. Ich wollte nur ein bisschen Informationen über andere Arten von "Schleifen durch Elemente" -Funktionen hinzufügen.

  • .every() (Hört auf, das erste Mal zu schleifen, dass der Iterator falsch oder etwas Falsches zurückgibt.)
  • .some() (Hört auf, das erste Mal zu schleifen, dass der Iterator wahr oder etwas Wahres zurückkehrt)
  • .filter() (Erstellt ein neues Array mit Elementen, bei dem die Filterfunktion wahr zurückgibt und diejenigen weggelassen, in denen sie false zurückgibt.)
  • .map() (Erstellt ein neues Array aus den von der Iteratorfunktion zurückgegebenen Werten)
  • .reduce() (Erstellt einen Wert, indem Sie den Iterator wiederholt aufrufen und frühere Werte übergeben; siehe Spezifikation für Details; nützlich, um den Inhalt eines Arrays und viele andere Dinge zu summieren)
  • .reduceRight() (wie reduzieren, aber arbeitet in absteigender als aufsteigender Reihenfolge)

Gutschrift an: tjcrowder Für ein Array in JavaScript?

Eine weitere Überlegung zu den oben genannten großartigen Antworten ist die Verkettung. Mit foreach () können Sie nicht ketten, aber mit map () können Sie.

Zum Beispiel:

var arrayNumbers = [3,1,2,4,5];

arrayNumbers.map(function(i) {
    return i * 2
}).sort();

Mit .foreach () können Sie den .Sort () nicht erledigen, Sie werden einen Fehler erhalten.

Zum Ramda, der Unterschied zwischen R.map() und R.forEach() ist:

  1. R.forEach() Gibt das ursprüngliche Array zurück, während R.map() Gibt einen Funkartor zurück
  2. R.forEach() kann nur in Array arbeiten, aber R.map() Kann auch mit einem Objekt arbeiten (dh die Schlüssel-/Wertpaare des Objekts werden wie ein Array behandelt)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top