javascript之reduce()方法的使用

  之前看到reduce方法,老是看得我頭皮發麻,今天無心間又遇到他了,因而學習了下,接觸以後,以爲這個方法還挺好用的,在不少地方均可以派上用場,好比,數組中元素求和、數組去重、求數組中的最大值或最小值等等均可以用到它。javascript

  reduce() 方法接收一個函數做爲累加器,數組中的每一個值(從左到右)開始縮減,最終計算爲一個值。java

  語法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)數組

  能夠看出它接收一個回調函數和一個初始值。函數

  其中total爲初始值或者計算後的返回值(必須)、currentValue爲當前元素(必須)、currentIndex爲當前元素索引(可選)、arr爲當前元素所屬的對象(可選)、initialValue爲傳遞給函數的初始值學習

  

  案例1:數組去重spa

// 數組去重
var arr = [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
var newArr = arr.reduce(function (prev, next) {
	prev.indexOf(next) == -1 && prev.push(next)
	return prev
}, [])
console.log(arr)  // [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
console.log(newArr) // [12, 34, 342, 345, 123, 45]

  初始化一個空數組,判斷下一個元素是否在當前數組中,不存在則添加到當前數組中。對象

 

  案例2:數組中元素求和blog

// 數組求和
var arr = [1, 2, 3, 4, 5]
var total = arr.reduce(function (prev, next) {
	return prev + next
}, 0)
console.log(total)

  將0當作reduce回調函數中的初始值,而後依次累加索引

 

  案例3:求數組中最大值或最小值:ip

// 獲取數組中最大值
var arr = [134798, 3478973, 12, 345, 355, 425, 1342356, 3425566, 7908798]
var max = arr.reduce(function (prev, next) {
	return Math.max(prev, next)    // Math.min(prev, next)
}, 0)
console.log(max)

  

  tips:initialValue爲傳遞給函數的初始值,假如該值不存在時,則回調函數的初始值爲數組中的第一項,即回調函數中的prev值

相關文章
相關標籤/搜索