js 计算对象数组中某个属性值重复出现的个数

let list = [
      {name:"历下区",code:6},
      {name:"历下区",code:6},
      {name:"历下区",code:6},
      {name:"历城区",code:7},
      {name:"历城区",code:7},
      {name:"市中区",code:8},
      {name:"槐荫区",code:2},
    ];

//怎么将list转换为下面格式:
//num,相同的元素重复次数
[
     {name:"历下区",num:3},
   {name:"历城区",num:2}, 
   {name:"市中区",num:1},
   {name:"槐荫区",num:1}
  ]
 
步骤:
1. 首先要先获取所有需要计算的属性值
//先根据所有的name组合成一个数组
let titleList = list.map(item => {
    return item.name
})
 
//获得["历下区", "历下区", "历下区", "历城区", "历城区", "市中区", "槐荫区"]

2.将上面返回的结果变成:{历下区: 1, 历城区: 1, 市中区: 3,槐荫区:1}

function getRepeatNum(){
    return titleList.reduce((prev,next)=>{
        prev[next] = (prev[next] + 1) || 1;
        return prev;
    },{});
}
console.log(getRepeatNum());//{历下区: 1, 历城区: 1, 市中区: 3,槐荫区:1}

3.  得到最终结果
let myObj = this.getRepeatNum(titleList),winningList = [];
 
for(let i in myObj){
    let obj = {
        title:i,
        num:myObj[i]
    }
    winningList.push(obj)
}
console.log(winningList)
//[{"title":"历下区","num":3},{"title":"历城区","num":2},{"title":"市中区","num":1},{"title":"槐荫区","num":1}]
posted @   赵辉Coder  阅读(2023)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示