我知道有很多这样的话题。而且我知道基础知识:.forEach()在原始阵列和.map()新阵列上运行。
.forEach()
.map()
就我而言:
function practice (i){ return i+1; }; var a = [ -1, 0, 1, 2, 3, 4, 5 ]; var b = [ 0 ]; var c = [ 0 ]; console.log(a); b = a.forEach(practice); console.log("====="); console.log(a); console.log(b); c = a.map(practice); console.log("====="); console.log(a); console.log(c);
这是输出:
[ -1, 0, 1, 2, 3, 4, 5 ] ===== [ -1, 0, 1, 2, 3, 4, 5 ] undefined ===== [ -1, 0, 1, 2, 3, 4, 5 ] [ 0, 1, 2, 3, 4, 5, 6 ]
我不明白为什么使用topractice的更改值。 如果这是一个愚蠢的问题,我很抱歉,但我对这种语言很陌生,到目前为止我发现的答案并不能让我满意。b``undefined
practice
b``undefined
它们不是一回事。让我解释一下区别。
forEach:这将遍历一个列表并对每个列表成员应用一些具有副作用的操作(例如:将每个列表项保存到数据库中)并且不返回任何内容。
forEach
map:这将遍历一个列表,转换该列表的每个成员,并返回另一个与转换后的成员大小相同的列表(例如:将字符串列表转换为大写)。它不会改变调用它的数组(尽管回调函数可能会这样做)。
map
参考
Array.prototype.forEach() - JavaScript | MDN
Array.prototype.map() - JavaScript | MDN