1.reduce实现
思路:reduce的累加器初始化成一个空对象 最开始我们就可以拿到这个空对象
判断空对象里面是否有这个元素 有就让他++ 没有就给对象的该属性尽心个赋值为1
最后将计算好的对象return出去
let arr=["b", "c","b", "c","a", "b", "c"]
const newObj=arr.reduce((obj,item)=>{
if(obj[item]) {
obj[item]++
}else{
obj[item]=1
}
return obj
},{})
console.log(newObj);
得到的结果是这样的
2.map实现
思路也是一样的 map会返回指定格式数据
我们使用map循环数组 先在循环外定义一个对象为空 在判断对象的是否有该属性 最后拿到的结果会是数组.length-1个对象 每一个都是计算好的属性 我们只需要数组的第0项后就可以拿到计算好的对象了 最后拿到的结果是一样的
let obj={}
const o=arr.map(item=>{
if(obj[item]){
obj[item]++
}else{
obj[item]=1
}
return obj
})
console.log(o[0]);