【发布时间】:2021-09-08 15:39:02
【问题描述】:
如何使用对象值对对象数组进行分组,然后对分组对象的列值求和。这是示例对象。
let salesData = [
{
'phone': 'iPhone',
'city': 'NewYork',
'01/09': 200,
'02/09': '',
'03/09': 120,
'04/09': ''
},
{
'phone': 'iPhone',
'city': 'Los Angels',
'01/09': 80,
'02/09': 140,
'03/09': '',
'04/09': 15
},
{
'phone': 'Samsung',
'city': 'New York',
'01/09': '',
'02/09': 70,
'03/09': 10
'04/09': 20
}
],
dynamicKeys = ['01/09', '02/09', '03/09'];
这里我需要用城市对数据进行分组,并对动态键的值求和,像这样
[
{
'city': 'New York',
'01/09': 200,
'02/09': 70,
'03/09': 130
},
{
'city': 'Los Angels',
'01/09': 80,
'02/09': 140,
'03/09': ''
}
]
这是我尝试过的代码,但它不起作用
let newArr = salesData.reduce((acc, item) => {
let existItem = acc.find(d =>
item.city === d.city
)
if(existItem){
dynamicKeys.forEach(d => {
if(!isNaN(item[d])) existItem[d] += item[d]
})
}else{
acc.push(item);
}
return acc
},[])
这里的分组似乎正在工作,但 dynamicKeys 的总和不正确,使用 loadsh/plain js 实现此目的的最佳方法是什么
【问题讨论】:
标签: javascript arrays object data-structures