用法
map:【this可以去掉】
numList.map((item,index,arr)=>{
item ++;
},this)
numList.map(function(item,index,arr){
item ++;
},this)
forEach用法同上,把map改成forEach即可
相同点
-
都是循环数组中的每一项
-
都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)
-
匿名函数中的this都是指向window
-
只能遍历数组
不同点
forEach没有返回值,map有返回值
也就是说,forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。
示例1:
let newList = this.numList.map(value => value * value).filter(value => value>10);
return newList;
map可以返回新的数组,并且还可以和filter,reduce等结合使用
示例2:
let newList = this.numList.forEach(value => value * value);
return newList;
forEach会报undefined
总结
1. forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
2. map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)。