最近碰到一个题目,要进行数组重复数据的统计
题目:
//现在有一个数组
const arr = ['a','b','c','b','a','c','b']
//需要将其内部数据重复次数统计出来,并且转换成一个对象{a:2,b:3,c:2}的形式
.......
这个题目做出来的方法有很多,我这里推荐一个方法reduce()
Array.reduce()主要于对数组的求和,也可以对字符串,数组进行拼接
reduce()接受四个参数:
Array.reduce((accumulator,current,index,Array) =>{
.......
return accumulator
} ,int)
第一个参数是:`accumulator`是当前聚合值,
第二个参数是: `current`是数组循环时的当前元素
第三个参数是: `index` 是数组元素的索引值
第四个参数是: `Array` 是数组本身
int : 是`accumulator`的初始值 可以自行进行设置
一般常用的是前面的两个参数,后面两个参数不常用,常用的使用场景便是数组的求和
let arr = [1, 2, 3, 4];
let a = arr.reduce((accumulator,current)=> accumulator += current , 0)
//这里使用的es6语法,省略了return
console.log(a); //10
这里使用reduce()方法可以很简单的解决这个问题
const arr = ['a','b','c','b','a','c','b']
const obj = arr.reduce((sum, item) => {
sum[item]= sum[item]? sum[item] += 1 : 1
return sum
}, {})
console.log(obj) //{a: 2, b: 3, c: 2}