数组的forEach和map方法有哪些区别?
时间: 2023-12-31 14:05:47 浏览: 78
JS中Map和ForEach的区别
5星 · 资源好评率100%
Array.prototype.forEach() 和 Array.prototype.map() 都是数组的方法,它们都可以遍历数组,但是有以下区别:
1. 返回值不同:forEach() 方法没有返回值,而 map() 方法会返回一个新的数组。
2. 回调函数参数不同:forEach() 方法的回调函数可以接受三个参数:当前遍历的元素、当前遍历的索引和被遍历的数组本身;而 map() 方法的回调函数只接受当前遍历的元素。
3. 原数组的改变:forEach() 方法不会改变原数组,而 map() 方法会改变原数组。
举个例子:
```javascript
const arr = [1, 2, 3];
arr.forEach((item, index, array) => {
console.log(item, index, array);
});
// 输出:1 0 [1, 2, 3]
// 2 1 [1, 2, 3]
// 3 2 [1, 2, 3]
const newArr = arr.map(item => {
return item * 2;
});
console.log(newArr); // 输出 [2, 4, 6]
console.log(arr); // 输出 [1, 2, 3]
```
从上面的例子可以看出,forEach() 方法只是遍历了原数组,没有改变原数组的值,而 map() 方法返回了一个新的数组,同时也改变了原数组的值。
阅读全文