Heim  >  Artikel  >  Web-Frontend  >  Warum gibt meine Funktion „Undefiniert“ zurück, wenn ich Array-Iterationen verwende?

Warum gibt meine Funktion „Undefiniert“ zurück, wenn ich Array-Iterationen verwende?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 08:12:02339Durchsuche

Why Does My Function Return Undefined When Using Array Iterations?

Gibt ein undefiniertes Dilemma zurück: Enthüllung des Geheimnisses hinter Funktionen und Array-Iterationen

Im Bereich der Programmierung entsteht ein häufiges Rätsel bei der Verwendung von Funktionen und Array-Iterationen. Obwohl häufig eine Return-Anweisung verwendet wird, ist das Ergebnis möglicherweise immer noch undefiniert. Um die Gründe für dieses verwirrende Problem aufzudecken, untersuchen wir einen konkreten Fall mit einer Funktion namens getByKey, die versucht, ein Objekt aus einem Array basierend auf einem Schlüssel abzurufen.

The Enigma

Die getByKey-Funktion, die dazu gedacht ist, in einem Array von Objekten nach einem Objekt zu suchen, gibt durchweg undefiniert zurück. Trotz des Vorhandenseins einer Return-Anweisung in der inneren Callback-Funktion hat dieses rätselhafte Verhalten die Entwickler verblüfft.

Untersuchung der Lösung

Bei der Untersuchung stellt sich heraus, dass die Return Die Anweisung wird innerhalb der Rückruffunktion ausgeführt, die für die forEach-Methode bereitgestellt wird. Dies ist nicht dasselbe wie die Rückkehr von der getByKey-Funktion selbst. Um dieses Problem zu beheben, können wir entweder den Code so ändern, dass er die Map-Methode anstelle von forEach verwendet, oder wir können uns für eine herkömmliche for-Schleife entscheiden, die mehr Kontrolle über den Iterationsprozess bietet.

Optimierter Code mit Map

Mit der Map-Methode wandeln wir das Array in ein neues Array um, das die gewünschten Ergebnisse enthält. Für jedes Element im ursprünglichen Array wenden wir die Callback-Funktion an, die nach dem Schlüssel sucht und das passende Objekt zurückgibt.

function getByKey(key) {
    return data.map(function (val) {
        if (val.Key === key) {
            return val;
        }
    }).filter(function (val) {
        return val !== undefined;
    })[0];
}

Vereinfachte Lösung mit For-Schleife

Für eine höhere Effizienz können wir eine for-Schleife verwenden, um die Array-Elemente zu durchlaufen. Dieser Ansatz bietet eine direkte Kontrolle über die Schleife und ermöglicht es uns, sofort auszubrechen, wenn das passende Objekt gefunden wird.

function getByKey(key) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].Key === key) {
            return data[i];
        }
    }
}

Die Subtilität verstehen

Es ist wichtig zu beachten dass die Rückruffunktion in forEach nicht direkt von der enthaltenden Funktion zurückkehrt. Die return-Anweisung innerhalb des Rückrufs wirkt sich auf die Ausführung des Rückrufs selbst aus, nicht jedoch auf den Ausführungsablauf der umschließenden Funktion. Daher ist es wichtig, die Platzierung von Return-Anweisungen bei der Arbeit mit Array-Iterationsfunktionen sorgfältig zu prüfen.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Funktion „Undefiniert“ zurück, wenn ich Array-Iterationen verwende?. 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