功能强大的js数组方法:reduce

arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值。

reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用callback的第一个参数,不传默认数组的第一个元素):

callback回调函数里又接受四个参数分别是:

previousValue(上一次调用回调函数返回的值,或者是提供的初始值(initValue))

currentValue(数组中当前被处理的元素)

index(当前元素在数组中的索引)

array(调用reduce的数组)

简单应用:

1.求和

var total=[0,1,2,3].reduce((acc,cur)=>acc+cur,0)
  //total 6

2.将二维数组转化为一维

var arr1=[
    [0,1],
    [2,3],
    [4,5],
].reduce((acc,cur)=>acc.concat(cur),[])
//arr1 [0,1,2,3,4,5]

3.计算数组中每个元素出现的次数

var names=['Alice','Bob','Tiff','Bruce','Alice'];
var count=names.reduce(function(allNames,name){
    console.log(allNames)
    if(name in allNames){
        allNames[name]++;
    }else{
        allNames[name]=1;
    }
    return allNames;
},{})
  //count is {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

4.数组去重

var arr=[1,2,1,2,3,5,4,5,3,4,4,1,6];
let result=arr.sort().reduce((init,current)=>{
    if(init.length===0 || init[init.length-1]!==current){
        init.push(current);
    }
    return init;
},[]);
//result is [1,2,3,4,5,6]
原文地址:https://www.cnblogs.com/myspecialzone/p/10484252.html