首页 > 试题广场 >

说一说map 和 forEach 的区别?

[问答题]

说一说map 和 forEach 的区别?

推荐

得分点

map创建新数组、map返回处理后的值、forEach()不修改原数组、forEach()方法返回undefined

参考答案

标准回答

map 和 forEach 的区别:map有返回值,可以开辟新空间,return出来一个length和原数组一致的数组,即便数组元素是undefined或者是null。forEach默认无返回值,返回结果为undefined,可以通过在函数体内部使用索引修改数组元素。

加分回答

map的处理速度比forEach快,而且返回一个新的数组,方便链式调用其他数组新方法,比如filter、reduce

let arr = [1, 2, 3, 4, 5];
let arr2 = arr.map(value => value * value).filter(value => value > 10);
// arr2 = [16, 25]

延伸阅读

forEach处理数组

var arr = [1,2,3,4]
arr.forEach((value, key) => {
 return arr[key] = value * value;
});

map处理数组

var arr = [1,2,3,4]
let list = arr.map(value => {
 return value * value;
});
编辑于 2021-09-15 11:58:03 回复(0)
解析有问题吗? forEach是会改变原数组,但不会返回新数组。
发表于 2022-01-29 17:05:03 回复(0)
forEach() 被调用时,不会改变原数组,也就是调用它的数组(尽管 callbackFn 函数在被调用时可能会改变原数组)forEach 不会直接改变调用它的对象,但是那个对象可能会被 callbackFn 函数改变,
就是回调函数有改变原数组的操作就会改变,是函数让他改变的。(严谨说法)
发表于 2023-01-02 14:28:20 回复(0)
foreach会改变原数组 map返回一个新数组
发表于 2022-08-20 17:25:36 回复(0)
forEach()方法不会返回执行结果,而是undefined,也就是说forEach()会修改原来的数组。而map()方法得到一个新的数组并返回
发表于 2021-10-20 18:26:48 回复(0)