["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的值