map()和forEach()都是用来遍历数组的,用法大致相同,但也有细微的差别
不同:
forEach()针对每一个元素执行提供的函数,对数据的操作会改变原数组
var arr1 = [0, 2, 4, 6, 8];
var newArr1 = arr1.forEach(function (item, index, arr1) {
console.log(this);
console.log(arr1);
arr1[index] = item / 2;
}, this);
console.log(arr1);
console.log(newArr1);
map()不会改变原数组的值,返回一个新数组,新数组中的值为原数组调用函数处理之后的值
var arr = [0, 2, 4, 6, 8];
var newArr = arr.map(function (item, index, arr) {
console.log(this);
console.log(arr);
return item / 2;
}, this);
console.log(newArr);
总之:
map()会产生一个新数组并返回这个新数组,修改数组内的值不会影响原先数组
而forEach()不会产生新数组,修改数据会影响原数组的值