forEach和map的区别

var arr = [1, 2, 3];

forEach是让数组里的每一项做一件事。

arr.forEach(function (item, index) {

console.log(item)

})

看下下面这张图,你就知道forEach究竟意味着什么了:

forEach和map的区别

而map是让数组通过某种计算产生一个新的数组。

注意到了没,map最后是要产生“新”数组的哦。

var newArr = arr.map(function (item, index) {

return item * 2

});

最后产生的新数组相比于原数组,每一项是原来的2倍。

也就是说,newArr是[2, 4, 6]

画个图让大家感受一下:

再把其他几个迭代方法也讲一下吧。

filter是筛选出数组中符合条件的项,组成新的数组。这个方法在工作中也经常能用到。

var newArr = arr.filter(function (item, index) {

return item > 1

});

所以newArr就是[2, 3]

reduce是让数组中的前项和后项做某种计算,并累计最终值。

var result = arr.reduce(function (prev, next) {

return prev + next;

})

result是1+2+3=6

every方法用来检测数组中每一项是否符合条件。

var result = arr.every(function(item, index) {

return item > 0;

})

result是true。因为是检测数组中“每一项”是否符合条件,所以数组里这三个item必须都满足条件才会true。

some方法跟every是一回事,只不过some方法是检测数组中是否有某些项符合条件。

var result = arr.some(function(item, index) {

return item > 2

})

result是true,因为数组里的三项只要有一个满足那么就是true了。