Array.prototype.forEach不会返回值

时间:2018-03-29 10:42:35

标签: javascript arrays

我有这个小片段:

let result = ['a', 'b', 'c'].forEach((element) => element);
console.log(result); // undefined

“问题”是forEach似乎没有返回任何价值。

修改

例如,

.filter.map按预期返回值。 .forEach是不同的。为什么呢?

我的目标是将数组的元素转换为大写。

2 个答案:

答案 0 :(得分:2)

来自MDN

  

forEach()为每个数组元素执行一次回调函数;与map()或reduce()不同,它总是返回未定义的值,并且不可链接。

forEach()不会返回任何内容。您可以改为使用map()

let result = ['a', 'b', 'c'].map((element) => element.toUpperCase());
console.log(result);

答案 1 :(得分:0)

  

为什么会这样?

forEach旨在迭代数组。它不应该做任何其他事情。

  

可以做些什么呢?

看起来就像你的代码试图克隆数组一样,所以你可以改用concat



let result = ['a', 'b', 'c'].concat();
console.log(result);