ホームページ > 記事 > ウェブフロントエンド > 「forEach」を使用すると関数が「unknown」を返すのはなぜですか?
forEach メソッドを使用するときに関数が値を返せない
オブジェクト配列値を検査する関数を作成すると、予期せず未定義が返されます。この問題は混乱を引き起こしており、この動作の背後にある理由を詳しく調べます。
問題の説明
提供されたコード スニペットでは、getByKey 関数は forEach メソッドを使用しています。データ配列を走査します。コールバック関数内で、条件チェックに基づいて値を返そうとします。ただし、この return ステートメントは、getByKey 関数自体ではなく、forEach に渡された匿名関数を終了するだけです。その結果、getByKey 関数の呼び出しから unknown が返されます。
解決策
この問題を解決するには、いくつかの方法があります。
For ループを使用する: forEach を従来の for ループに置き換えます。このアプローチにより、ループ自体から目的の値を返すことができます。
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i]; } } }
結果を変数に保存します: コールバック関数で、一致した値を割り当てます。値を変数に代入し、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 サイトの他の関連記事を参照してください。