我试图在我的 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/