11-1数组中的 forEach 和 map 的区别

本文对比了JavaScript中数组的两种迭代方法:foreach与map。详细介绍了这两种方法的共同点及各自的特点,包括如何使用它们来遍历数组以及它们对数组元素操作的不同之处。

共同点:1、都会遍历数组的每一项  
       2、都支持三个参数  当前每一项(item)  索引(index)  数组本身   
       3、匿名函数的this都是指向window
       4、只能遍历数组
for each :循环原来的数组 不会返回数据  允许callback更改原始数组的元素
map:循环原数组并映射一个新数组出来  不会对空数组进行检测

数组中`forEach``map`方法存在多方面的区别1. **返回值类型**:`forEach`没有返回值,仅用于遍历数组元素并执行指定回调函数,返回值是`undefined`,不可链式调用;`map`方法返回一个新数组,由原数组每个元素调用回调函数后的返回值组成[^1][^2][^4]。 ```javascript // forEach示例 const arr = [1, 2, 3]; const resultForEach = arr.forEach((element) => { console.log(element * 2); }); console.log(resultForEach); // undefined // map示例 const resultMap = arr.map((element) => { return element * 2; }); console.log(resultMap); // [2, 4, 6] ``` 2. **使用方式**:`forEach`通过对数组每个元素执行回调函数实现遍历操作;`map`对数组每个元素调用回调函数,将返回结果组成新数组[^1]。 3. **副作用**:`forEach`允许对原数组进行修改;`map`不会修改原数组,返回新数组,不改变原数组内容[^1][^2]。 ```javascript // forEach修改原数组示例 const arr2 = [1, 2, 3]; arr2.forEach((element, index, array) => { array[index] = element * 2; }); console.log(arr2); // [2, 4, 6] // map不修改原数组示例 const arr3 = [1, 2, 3]; const newArr3 = arr3.map((element) => { return element * 2; }); console.log(arr3); // [1, 2, 3] console.log(newArr3); // [2, 4, 6] ``` 4. **对空数组或空位的处理**:`map`不会对空数组进行检测;`forEach`会跳过数组的空位[^2][^5]。 5. **使用场景**:`forEach`适合不需要返回新数组,单纯对数组元素进行操作的情况,如遍历数组打印、触发元素相关事件等;`map`常用于根据原数组元素生成经过转换的新数组的场景,如对数组数字元素统一运算得到新数值数组,或提取对象数组中每个对象的某个属性组成新数组等[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值