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

Mik*_*ink 3 javascript

我试图将回报放入我的foreach,但它回报了undefined。但是当我将相同的if语句放入 a 中时for loop,它会返回正确的值。为什么会发生这种情况?

this.SpriteAndHull.forEach(element => {
      if (element.name == name) {
        return element;
      }
});
Run Code Online (Sandbox Code Playgroud)

mho*_*ges 5

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

编辑:应该注意的是,从.forEach()函数返回不会执行任何操作,因为.forEach()(根据设计)不支持返回值并且将始终返回undefined

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

function getElementByName(elems, name) {
  let elem;

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

  return elem;
}
Run Code Online (Sandbox Code Playgroud)

或者:

function getElementByName(elems, name) {
  return elems.find(element => element.name === name);
}
Run Code Online (Sandbox Code Playgroud)