forEach、map、reduce都是Array提供的遍历数组的方法,很像,区别也很明显
forEach
var arr = [2, 3, 4, 1]
var res = arr.forEach(function(ele){
console.log(ele * 2)
})
// res为undefined
forEach无返回值。
按顺序跟目标做点事情,不管结果。
map
var arr = [2, 3, 4, 1]
var res = arr.map(function(ele){
return ele * 2
})
// res为[4, 6, 8, 2]
map返回一个新数组,每个元素都是回调函数的结果。
按顺序跟目标做点事情,并得到对应顺序的结果。
reduce
var arr = [2, 3, 4, 1]
var res = arr.reduce(function(accumulator, currentValue){
console.log(accumulator, currentValue)
return accumulator + currentValue
})
// res为10
reduce返回函数累计处理的结果。
按顺序跟目标做点事情,统计结果。 三者都不会改变原数组