Array.prototype.reduce()
定义:
reduce()
方法对数组中的每个元素按序执行一个由您提供的 reducer
函数,每一次运行 reducer
会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
语法:
Arrary.reduce(callbackFn)
Arrary.reduce(callbackFn,initialValue)
参数:
callbackFn
一个reduce
函数,包括四个参数:
previousValue
:上一次调用callbackFn
时的返回值。在第一次调用时,若指定了初始值initialValue
,其值则为initialValue
,否则为数组索引为0的元素array[0]
。currenValue
:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。currentIndex
:数组中正在处理的元素的所有。在若指定了初始值initialValue
,其值则为数组索引为 0,否则从索引1起始。Array
用于遍历的数组
initialValue
(可选项)
作为第一次调用 callback
函数时参数 previousValue
的值。若指定了初始值 initialValue
,则 currentValue
则将使用数组第一个元素;否则 previousValue
将使用数组第一个元素,而 currentValue
将使用数组第二个元素。
返回值
返回使用reduce
回调函数遍历整个数组后的结果
eg1.计算数组所有元素的总和
const array=[1,2,3,4,5]
//0+1+2+3+4+5
const intialValue=0;
const sum=array1.reduce(
(pre,cur)=>pre+cur ,
initialValue
);
console.log(sum);//10
eg2.计算数组中每个元素的出现次数
let arr=['name','age','long','job','long','name','name']
//{name:3,age:1,long:2,job:1}
let result = arr.reduce(function(pre,cur){
if(!pre[cur]){
pre[cur]=1;
}
else{
pre[cur]++;
}
return pre
},{})
console.log(result);