gpt4 book ai didi

javascript - 如何减少和映射对象数组?

转载 作者:行者123 更新时间:2023-12-04 02:29:37 24 4
gpt4 key购买 nike

如何减少这个对象数组并将其映射到一个新数组?

我的数据:

var objArray = 
[{
state: 'NY',
type: 'A',
population: 100
},
{
state: 'NY',
type: 'A',
population: 300
},
{
state: 'NY',
type: 'B',
population: 200
},
{
state: 'CA',
type: 'A',
population: 400
},
{
state: 'CA',
type: 'A',
population: 400
}];

如果一个条目具有相同的statetype,我需要将它组合成一个条目并对它们的人口求和。

最后我需要将它映射到这种格式的数组。

 var outputArray = [ ['A', 'NY', 400 ], ['B', 'NY', 200], ['A', 'CA', 800] ]

最佳答案

好吧,首先你要减少它。这可以像这样完成...

objArray.reduce((prev, obj) => {
if(1 + (indx = prev.findIndex(oldObj => oldObj.type === obj.type && oldObj.state === obj.state))) {
prev[indx].population += obj.population;
} else {
prev.push({...obj})
}
return prev;
}, [])

这会获取正在收集的数组,并以某种方式修改它并在 reduce 回调中返回它。如果它能找到一个具有正确状态和类型的值,它将修改现有值的人口;否则它会将一个新对象附加到数组的末尾。

现在您需要对其进行映射。

.map(obj => [ obj.type, obj.state, obj.population ])

关于javascript - 如何减少和映射对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46698596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com