ホームページ  >  記事  >  ウェブフロントエンド  >  反復関数内に `return` ステートメントがあるにもかかわらず、`forEach` が `unknown` を返すのはなぜですか?

反復関数内に `return` ステートメントがあるにもかかわらず、`forEach` が `unknown` を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 09:28:03140ブラウズ

Why Does `forEach` Return `undefined` Even With a `return` Statement Inside the Iteration Function?

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 ループの方が効率的です。データ配列を反復処理して、見つかった値を返します。

追加の考慮事項:

  • キーを返す代わりに、完全な値を返すこともできます。
  • 反復関数内で Break ステートメントを使用すると、ループを早期に終了するため、パフォーマンスが向上します。キーが見つかったとき。

以上が反復関数内に `return` ステートメントがあるにもかかわらず、`forEach` が `unknown` を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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