javascript - forEach 不像 for 循环那样向外部函数返回值

标签 javascript

我试图在我的 foreach 中返回一个值,但它返回了 undefined。但是,当我将相同的 if 语句放入 for 循环 时,它会返回正确的值。为什么会这样?

this.SpriteAndHull.forEach(element => {
      if (element.name == name) {
        return element;
      }
});

最佳答案

当使用 .forEach() 时,您的 return 语句从传递给 forEach 回调的函数返回,而不是外部函数。

编辑:应该注意的是,从 .forEach() 函数返回什么都不做,因为 .forEach()(按设计)不支持一个返回值,并将始终返回 undefined

您可以做的一件事是设置元素然后返回它,或者简单地使用不同的迭代器函数,如下所示:

function getElementByName(elems, name) {
  let elem;

  elems.forEach(element => {
    if (element.name === name) {
      elem = element;
    }
  });

  return elem;
}

或:

function getElementByName(elems, name) {
  return elems.find(element => element.name === name);
}

关于javascript - forEach 不像 for 循环那样向外部函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59037709/

相关文章:

javascript - 避免重复 jquery 事件绑定(bind)

javascript - 如何在用户点击帖子时自动在新标签页中打开帖子?

javascript - 在哪里可以找到将 Breeze JS 与 Rails 结合使用的适配器?

javascript - 谷歌地图捏缩放事件

javascript - 用于测试是否只有 ASCII 字符的正则表达式

javascript - 无法从 react 图中的 Firebase 获取数据

javascript - JS 在按下 Shift 时限制鼠标与轴的移动(对于可拖动元素)

javascript - 生成2个数字之间的随机数?

javascript - Drupal中如何获取压缩文件名?

javascript - 根据第一个字符或先前出现的字符限制模式的一部分