JavaScript -- arr.reduce()方法的理解与应用

简介
  1. reduce()接受一个函数作为累加器,从数组第一个值开始缩减,直到最后一个值缩减完成。最终计算为一个值
  2. reduce()可做为高阶函数,用于函数的,compose
  3. reduce()无法调用空数组,会报错。
语法:

array.reduce( function (total, currentValue, currentIndex, arr), initialValue)

arr.reduce (function ,initialValue) function (total, currentValue, currentIndex, arr)
fun: 回调函数 total: 初始值initialValue,或fun的返回值
initialValue: 传递函数初始值 currentValue:当前值
. currentIndex:当前我的索引
. arr:要累加的arr非空数组

要注意的是当 initialValue 的值为空的,也就是没有初始值时,函数第一次累加的 total 将会是 arr 的第一个元素,currentindex 的值为 1,

简单例子:

Exp1

累加应用

let arr2 = [1,2,3,4,5,6,7,8,9,10]
let allsum = arr2.reduce((sum,currentValue)=>{
    return sum += currentValue
},100)
console.log(allsum)//155

Exp2

将string1分割为数组[a,b,c,d],用reduce拼接到newStr中,得到的结果 0abcd;

let string = 'a-b-c-d'
let arr = string.split('-')//[a,b,c,d] 
let newStr = '0'

function getString(all, currentValue, currentIndex, arr) { 
    console.log(all, currentValue, currentIndex)
    return all += currentValue
}
let value = arr.reduce(getString,newStr) 
console.log(value) // 0abcd 
 
getString部分运行结果: 被调用四次
0 a 0 
0a b 1 
0ab c 2 
0abc d 3

最终value打印: 
0abcd

要注意的是,如果没有初始值 newStr,运行结果如

getString部分运行结果:  被调用三次
a b 1 //第一次循环将arr的第一个元素作为初始值,当前索引为1
ab c 2 
abc d 3

最终value打印: 
abcd

你可能感兴趣的:(js)