最近碰到一個題目,要進行陣列重復資料的統計
題目:
//現在有一個陣列
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}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321276.html
標籤:其他
下一篇:JS基礎 -- 大復習(階段二)
