Ich möchte jede Zeichenfolge in einem Array mit einer bestimmten Zeichenfolge vergleichen. Meine aktuelle Implementierung ist:
function startsWith(element) {
return element.indexOf(wordToCompare) === 0;
}
addressBook.filter(startsWith);
Diese einfache Funktion funktioniert, aber nur, weil wordToCompare gerade als globale Variable festgelegt wird, aber ich möchte dies natürlich vermeiden und als Parameter übergeben. Mein Problem ist, dass ich nicht sicher bin, wie StartsWith () definiert werden soll, sodass ein zusätzlicher Parameter akzeptiert wird, da ich nicht wirklich verstehe, wie die Standardparameter übergeben werden. Ich habe all die verschiedenen Möglichkeiten ausprobiert, die mir einfallen, und keine davon funktioniert.
Wenn Sie auch erklären könnten, wie die an 'eingebaute' Rückruffunktionen übergebenen Parameter funktionieren (Entschuldigung, ich kenne keinen besseren Begriff für diese), wäre das großartig
quelle
Der zweite Parameter des Filters setzt dies innerhalb des Rückrufs.
Sie könnten also so etwas tun wie:
quelle
{one: 'haha', two:'hoho'}
Wenn Sie nach einer ES6-Alternative mit Pfeilfunktionen suchen, können Sie Folgendes tun.
Aktualisierte Version mit enthält :
quelle
quelle
Sie können die Pfeilfunktion in einem Filter folgendermaßen verwenden:
Pfeilfunktionen auf MDN
quelle
Für alle, die sich fragen, warum ihre Fettpfeilfunktion ignoriert wird
[, thisArg]
, zB warum["DOG", "CAT", "DOG"].filter(animal => animal === this, "DOG")
kehrt zurück[]
Dies liegt daran, dass
this
innerhalb dieser Pfeilfunktionen beim Erstellen der Funktion gebunden und auf den Wert vonthis
in dem umfassenderen Bereich festgelegt werden, sodass dasthisArg
Argument ignoriert wird. Ich habe das ziemlich einfach umgangen, indem ich eine neue Variable in einem übergeordneten Bereich deklariert habe:let bestPet = "DOG"; ["DOG", "CAT", "DOG"].filter(animal => animal === bestPet); => ["DOG", "DOG"]
Hier ist ein Link zu weiteren Informationen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#No_separate_this
quelle
basierend auf oddRaven Antwort und https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Ich habe es auf 2 verschiedene Arten gemacht. 1) Funktionsweise verwenden. 2) Inline-Verwendung.
quelle
Es gibt eine einfache Möglichkeit, die Filterfunktion zu verwenden, auf alle Parameter zuzugreifen und sie nicht zu komplizieren.
Sofern thisArg des Rückrufs nicht auf einen anderen Bereichsfilter festgelegt ist, wird kein eigener Bereich erstellt, und wir können auf Parameter innerhalb des aktuellen Bereichs zugreifen. Wir können 'this' festlegen, um einen anderen Bereich zu definieren, um bei Bedarf auf andere Werte zuzugreifen. Standardmäßig wird jedoch der Bereich festgelegt, von dem aus aufgerufen wird. Sie können sehen, dass dies für Winkelbereiche in diesem Stapel verwendet wird .
Die Verwendung von indexOf macht den Zweck des Filters zunichte und erhöht den Overhead. Der Filter durchläuft das Array bereits. Warum müssen wir es dann erneut durchlaufen? Wir können es stattdessen zu einer einfachen reinen Funktion machen .
Hier ist ein Anwendungsszenario innerhalb einer React-Klassenmethode, in der der Status ein Array mit dem Namen items enthält . Mithilfe des Filters können wir den vorhandenen Status überprüfen:
quelle