我有这个小片段:
let result = ['a', 'b', 'c'].forEach((element) => element);
console.log(result); // undefined
“问题”是forEach
似乎没有返回任何价值。
修改
例如, .filter
或.map
按预期返回值。
.forEach
是不同的。为什么呢?
我的目标是将数组的元素转换为大写。
答案 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);