Heim > Web-Frontend > js-Tutorial > Warum gibt „forEach' „undefiniert' zurück, selbst wenn eine „return'-Anweisung innerhalb der Iterationsfunktion vorhanden ist?

Warum gibt „forEach' „undefiniert' zurück, selbst wenn eine „return'-Anweisung innerhalb der Iterationsfunktion vorhanden ist?

Mary-Kate Olsen
Freigeben: 2024-11-10 09:28:03
Original
202 Leute haben es durchsucht

Why Does `forEach` Return `undefined` Even With a `return` Statement Inside the Iteration Function?

Fehlerbehebung bei undefinierten Rückgaben in Funktionen mit forEach

Bestimmte Funktionen können bei Verwendung mit der forEach-Methode trotz der Einbeziehung einer Rückgabe undefiniert zurückgeben Stellungnahme. Dieses Verhalten tritt auf, weil sich die return-Anweisung auf die an forEach übergebene Iterationsfunktion und nicht auf die einschließende Funktion selbst auswirkt.

Beispielcode:

Betrachten Sie die folgende Funktion:

def get_by_key(key):
    data.forEach(function(i, val):
        if data[val].Key == key:
            return data[val].Key
        else:
            return "Couldn't find"
    )
Nach dem Login kopieren

Wenn Sie diese Funktion aufrufen, erwarten Sie möglicherweise, dass sie den Wert des Schlüssels im Datenarray zurückgibt, dies wird jedoch immer zurückgegeben undefiniert. Dies liegt daran, dass sich die Return-Anweisung innerhalb der Iterationsfunktion befindet, was keinen Einfluss auf den Rückgabewert von get_by_key hat.

Lösung:

Es gibt zwei Hauptmöglichkeiten zur Adressierung dieses Problem:

1. Verwenden eines Abschlusses:

def get_by_key(key):
    found = None
    data.forEach(function(val):
        if val.Key == key:
            found = val
    )
    return found
Nach dem Login kopieren

In dieser Lösung erstellen wir einen Abschluss, indem wir die gefundene Variable außerhalb der Iterationsfunktion deklarieren. Dadurch können wir den Wert zurückgeben, ohne die Iterationsfunktion zu beeinträchtigen.

2. Verwendung einer for-Schleife:

def get_by_key(key):
    for i in range(len(data)):
        if data[i].Key == key:
            return data[i]
Nach dem Login kopieren

Bei kleineren Datensätzen kann eine einfache for-Schleife effizienter sein als die Verwendung von forEach. Es durchläuft das Datenarray und gibt den gefundenen Wert zurück.

Zusätzliche Überlegungen:

  • Anstatt den Schlüssel zurückzugeben, möchten Sie möglicherweise den vollständigen Wert zurückgeben des Objekts, das mit dem Schlüssel übereinstimmt.
  • Die Verwendung der break-Anweisung innerhalb der Iterationsfunktion kann die Leistung verbessern, da sie die Schleife frühzeitig verlässt, wenn der Schlüssel vorhanden ist gefunden.

Das obige ist der detaillierte Inhalt vonWarum gibt „forEach' „undefiniert' zurück, selbst wenn eine „return'-Anweisung innerhalb der Iterationsfunktion vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage