使用 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中文网其他相关文章!