ホームページ  >  記事  >  ウェブフロントエンド  >  「forEach」を使用すると関数が「unknown」を返すのはなぜですか?

「forEach」を使用すると関数が「unknown」を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 04:45:02491ブラウズ

Why Does My Function Return `undefined` When Using `forEach`?

forEach メソッドを使用するときに関数が値を返せない

オブジェクト配列値を検査する関数を作成すると、予期せず未定義が返されます。この問題は混乱を引き起こしており、この動作の背後にある理由を詳しく調べます。

問題の説明

提供されたコード スニペットでは、getByKey 関数は forEach メソッドを使用しています。データ配列を走査します。コールバック関数内で、条件チェックに基づいて値を返そうとします。ただし、この return ステートメントは、getByKey 関数自体ではなく、forEach に渡された匿名関数を終了するだけです。その結果、getByKey 関数の呼び出しから unknown が返されます。

解決策

この問題を解決するには、いくつかの方法があります。

  1. For ループを使用する: forEach を従来の for ループに置き換えます。このアプローチにより、ループ自体から目的の値を返すことができます。

    function getByKey(key) {    
        for (var i = 0; i < data.length; i++) {
            if (data[i].Key === key) {
               return data[i];
            }
        }
    }
  2. 結果を変数に保存します: コールバック関数で、一致した値を割り当てます。値を変数に代入し、getByKey からその変数を返します。 function.

    function getByKey(key) {    
        var found = null;
        data.forEach(function (val) {
            if (val.Key === key) {
                found = val;
            }
        });
        return found;
    }

これらのソリューションを実装すると、一致が見つかったときに getByKey 関数が適切に目的の値を返すことが保証されます。

以上が「forEach」を使用すると関数が「unknown」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。