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返回函式累計處理的結果。
按順序跟目標做點事情,統計結果。 三者都不會改變原陣列