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}]

浙公网安备 33010602011771号