我们常常需要统计到数组中的元素的总个数,我平常用到的这三个就很不错
方法一:使用 reduce 方法 --- 直接获取
const names = ['peter', 'tom', 'mary', 'bob', 'tom','peter'];
const nameNum = names.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else{
pre[cur] = 1
}
return pre
},{})
console.log(nameNum); //{ peter: 2, tom: 2, mary: 1, bob: 1 }
方法二:创建一个对象 -- 需要在循环内处理其他的数据时,可以用该方法进行计算统计
const arr= ['peter', 'tom', 'mary', 'bob', 'tom','peter']
const obj = {}
for (let i = 0; i < arr.length; i++) {
const element = arr[i]
if (obj[element]) {
obj[element]++
} else {
obj[element] = 1
}
}
console.log(obj) // 打印数据:{peter: 2, tom: 2, mary: 1, bob: 1}
方法三:创建一个新的map对象 -- 也是在循环内处理数据;
const arr= ['peter', 'tom', 'mary', 'bob', 'tom','peter']
const obj = new Map()
for (let i = 0; i < arr.length; i++) {
const element = arr[i]
let num = obj.get(element)
if (num) {
obj.set(element, ++num)
} else {
obj.set(element, 1)
}
}
打印出来的数据如图: