从forEach javascript返回

时间:2017-09-14 15:54:48

标签: javascript ecmascript-6

我有以下代码:

options.forEach((option) => {
  return(option.get('template_name'))
})

其中options包含2个地图的列表

我希望这会返回模板名称,但我会得到2 为什么是这样?如何从javascript中的forEach函数返回?

2 个答案:

答案 0 :(得分:3)

forEach没有回来。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/forEach#Return_value

请改用maphttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/map#Return_value

此外,使用map选项必须是数组。

查看此示例。

var options = Array.from(document.getElementById('selections').options),
    newOptions = options.map(function(item){
        return item.value
    });

console.log(newOptions);

document.getElementById('results').insertAdjacentHTML('afterbegin', newOptions.reduce((a,b) => a.concat(`${b} `), ' '));
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>returning from forEach javascript</title>
</head>
<body>

    <select id="selections">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
    
    <div id="results"></div>
    
</body>
</html>

答案 1 :(得分:1)

这是一个古老的for循环有用的东西:

 for(var option of options){
    return option.get("template_name");
 }

等于:

 return options[0].get("template_name");

或获取所有名称:

 const tnames = options.map( option => option.get("template_name") );