javascript中对象的分组数组
如何在两个属性之后对对象数组进行分组? 在以下情况下是否可以使用reduce 例如:按国家/地区和城市对以下数组进行分组,并对“age”属性求和:javascript中对象的分组数组,javascript,reduce,Javascript,Reduce,如何在两个属性之后对对象数组进行分组? 在以下情况下是否可以使用reduce 例如:按国家/地区和城市对以下数组进行分组,并对“age”属性求和: array = [ { age: 20, country: "England" city: "London", zip: "1234" }, { age: 25, country: "England" city: "London", zip: "12345" }, { age: 40, country: "En
array = [
{
age: 20,
country: "England"
city: "London",
zip: "1234"
},
{
age: 25,
country: "England"
city: "London",
zip: "12345"
},
{
age: 40,
country: "England"
city: "Manchester",
zip: "123456"
}
]
/*预期结果:*/
expectedArray = [
{
age: 45, /* 20 + 25 */
country: "England"
city: "London",
zip: "Not relevant"
},
{
age: 40,
country: "England"
city: "Manchester",
zip: "NR"
]
您可以使用
findIndex
完成此操作。使用此数组方法,从城市和国家匹配的累加器数组中查找对象的索引。这将以其他方式给出对象的索引,如果没有这样的对象,那么它将返回-1。如果是-1
,则将对象从reduce
let数组=[{
年龄:20,,
国家:“英格兰”,
城市:“伦敦”,
邮政编码:“1234”
},
{
年龄:25岁,
国家:“英格兰”,
城市:“伦敦”,
邮政编码:“12345”
},
{
年龄:40,,
国家:“英格兰”,
城市:“曼彻斯特”,
邮政编码:“123456”
}
]
让newArray=array.reduce((acc,curr)=>{
让getIndex=acc.findIndex((项目)=>{
返回item.country==curr.country&&item.city===curr.city
});
如果(getIndex==-1){
附件推送(当前)
}否则{
acc[getIndex]。年龄+=当前年龄
}
返回acc;
}, []);
console.log(newArray)
Brk,谢谢你的回答!这个解决方案非常适合我。