Javascript 返回的foreach()函数未定义值本身
我试过了每个函数, 它返回的是未定义的值,而不是值本身。我不知道我哪里出错了Javascript 返回的foreach()函数未定义值本身,javascript,Javascript,我试过了每个函数, 它返回的是未定义的值,而不是值本身。我不知道我哪里出错了 let value = Array.from(container).forEach((data) => { if(data.innerText === titleID){ // -- when i console log this, it is returning the value i want console.log(data.parentNode.
let value = Array.from(container).forEach((data) => {
if(data.innerText === titleID){
// -- when i console log this, it is returning the value i want
console.log(data.parentNode.parentNode.getElementsByClassName(kpiID)[0].innerText)
// -- here it is returning underfine
return data.parentNode.parentNode.getElementsByClassName(kpiID)[0].innerText;
}
});
value();
根据我的研究,
有人说我们不能使用foreach返回值,有人说最好使用过滤器。我不知道该采取哪种方法。有什么建议吗?谢谢这是因为
forEach
不返回任何内容。它只是在数组上迭代
也许您需要组合使用Array.prototype.map
和Array.prototype.filter
let value=Array.from(container.map)(数据)=>{
if(data.innerText==titleID){console.log(data.parentNode.parentNode.getElementsByClassName(kpiID)[0].innerText)
返回data.parentNode.parentNode.getElementsByClassName(kpiID)[0].innerText;
}
返回false;
}).filter(el=>el!==false)
如果希望来自forEach
的值成为新数组中的元素,则要查找的是.map
let value = Array.from(container).map(function(data){...});
无论您在.map中返回什么,它都将是新数组中的匹配元素
value
您可以创建一个async
函数,其中Promise解析
值,而不是forEach中的返回值。然后等待函数的值
这是从forEach获取结果的一种解决方案。使用map代替forEach。