reduce统计数组出现的次数

572 阅读1分钟

["b", "c","b", "c","a", "b", "c"] reduce统计每个元素出现的次数,结果是: {a:1,b: 3, c: 3}

const arr = ["b", "c","b", "c","a", "b", "c"] 

const obj = {
    arr.reduce((preArr,curItem)=>{
    preArr[curItem]= preArr[curItem]? preArr[curItem]+1:1
    return preArr
    },{})
}
console.log(obj) // ==> {a:1, b: 3, c:  3}

函数可以理解为进去一堆,出来的是一个,参数接受的是一个回调函数

arr.reduce(function(prev,cur,index,arr){
...
}, init);

arr 表示将要操作的原数组;
pre 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。


//这里传入的初值为{},第一次循环计算{}+1=1,的值作为下一轮的pre的值