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}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具