使用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 更有效。它迭代資料數組並傳回找到的值。
其他注意事項:
以上是為什麼即使在迭代函數中使用 return 語句,forEach 也會傳回 undefined?的詳細內容。更多資訊請關注PHP中文網其他相關文章!