首頁 > web前端 > js教程 > 為什麼即使在迭代函數中使用 return 語句,forEach 也會傳回 undefined?

為什麼即使在迭代函數中使用 return 語句,forEach 也會傳回 undefined?

Mary-Kate Olsen
發布: 2024-11-10 09:28:03
原創
201 人瀏覽過

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的回傳值。

解:

主要有兩種解法本期:

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]
登入後複製

對於較小的資料集,簡單的 for 迴圈可能比使用 forEach 更有效。它迭代資料數組並傳回找到的值。

其他注意事項:

  • 您可能希望傳回完整值,而不是回傳鍵與鍵相符的物件的。
  • 在迭代函數中使用break語句可以提高效能,因為它會提前退出循環當找到鑰匙時。

以上是為什麼即使在迭代函數中使用 return 語句,forEach 也會傳回 undefined?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板