Heim  >  Artikel  >  Web-Frontend  >  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
Mary-Kate OlsenOriginal
2024-11-10 09:28:03139Durchsuche

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"
    )

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

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]

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!

Stellungnahme:
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