map方法:
代码中未执行return,没有接收新数组的变量值,则输出为原数组;
有接收新数组的变量,但没有return时输出undefined;
let arr = [1,2,3,4]
let arr1 = arr.map( (value,index,array)=>{
value = value + 1
console.log(`value:${value} index:${index} array:${array}`)
// value:2 index:0 array:1,2,3,4
// value:3 index:1 array:1,2,3,4
// value:4 index:2 array:1,2,3,4
// value:5 index:3 array:1,2,3,4
})
console.log(arr) //[1,2,3,4]
console.log(arr1) // [undefined, undefined, undefined, undefined]
因此,map方法是修改数组中的数据并返回新的数组;
var arr1 = [1,2,3,4];
var res1 = arr1.map((value,index,arr)=>{
value= value+ 1;
return value;
})
console.log(arr1); // [1,2,3,4]
console.log(res1); // [2,3,4,5]
forEach方法:
不执行return输出执行结果
let arr1 = [1,2,3,4]
arr1.forEach( (value,index,array)=>{
value = value + 1
console.log(`value:${value} index:${index} array:${array}`)
// value:2 index:0 array:1,2,3,4
// value:3 index:1 array:1,2,3,4
// value:4 index:2 array:1,2,3,4
// value:5 index:3 array:1,2,3,4
})
console.log(arr1) // [1, 2, 3, 4]
执行return后输出修改数据后的结果,但不返回新的数组,因此map方法有return,forEach方法没有return。
var arr = [1,2,3,4];
var res = arr.forEach((item,index,arr)=>{
arr[index] = item * 2;
return arr
})
console.log(arr); // [2,4,6,8]
console.log(res); // undefined