ホームページ > 記事 > ウェブフロントエンド > 反復関数内に `return` ステートメントがあるにもかかわらず、`forEach` が `unknown` を返すのはなぜですか?
forEach を使用した関数での未定義の戻り値のトラブルシューティング
特定の関数は、forEach メソッドで使用すると、戻り値が含まれているにもかかわらず、未定義を返す場合があります。声明。この動作は、return ステートメントが、囲んでいる関数自体ではなく、forEach に渡される反復関数に影響を与えるために発生します。
コード例:
次の関数について考えてみましょう:
def get_by_key(key): data.forEach(function(i, val): if data[val].Key == key: return data[val].Key else: return "Couldn't find" )
この関数を呼び出すと、データ配列内のキーの値が返されることが期待されるかもしれませんが、一貫して未定義を返します。これは、return ステートメントが反復関数内にあり、get_by_key の戻り値に影響しないためです。
解決策:
これに対処するには、主に 2 つの方法があります。この問題:
1.クロージャの使用:
def get_by_key(key): found = None data.forEach(function(val): if val.Key == key: found = val ) return found
このソリューションでは、反復関数の外側で見つかった変数を宣言することでクロージャを作成します。これにより、反復関数に影響を与えることなく値を返すことができます。
2. for ループの使用:
def get_by_key(key): for i in range(len(data)): if data[i].Key == key: return data[i]
データ セットが小さい場合は、forEach を使用するよりも単純な for ループの方が効率的です。データ配列を反復処理して、見つかった値を返します。
追加の考慮事項:
以上が反復関数内に `return` ステートメントがあるにもかかわらず、`forEach` が `unknown` を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。