Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回的foreach()函数未定义值本身_Javascript - Fatal编程技术网

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。