forEach和map的区别

用法

map:【this可以去掉】

numList.map((item,index,arr)=>{
    item ++;
},this)
numList.map(function(item,index,arr){
    item ++;
},this)

forEach用法同上,把map改成forEach即可

相同点

  1. 都是循环数组中的每一项

  2. 都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)

  3. 匿名函数中的this都是指向window

  4. 只能遍历数组

不同点

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()等组合使用)。

上一篇:ArrayList插入1000w条数据之后,我怀疑了jvm...


下一篇:论文翻译(16)--Towards Real-Time Multi-Object Tracking