Javascript 将嵌套数组中的对象数组分组,并将其总数添加到新数组中

Javascript 将嵌套数组中的对象数组分组,并将其总数添加到新数组中,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个具有不同税率及其值的对象数组。我试图将所有税率相同的值合并到一个对象中。下面是我的代码 const arr=[ { “税收”:[ { “名称”:“CGST 2.5%”, “总计”:4.01, }, { “名称”:“SGST 2.5%”, “总计”:4.01, }, ], }, { “税收”:[ { “名称”:“CGST 6%”, “总数”:10, }, { “名称”:“SGST 6%”, “总数”:10, }, ], }, { “税收”:[ { “名称”:“CGST 2.5%”, “总

我有一个具有不同税率及其值的对象数组。我试图将所有税率相同的值合并到一个对象中。下面是我的代码

const arr=[
{
“税收”:[
{
“名称”:“CGST 2.5%”,
“总计”:4.01,
},
{
“名称”:“SGST 2.5%”,
“总计”:4.01,
},
],
},
{
“税收”:[
{
“名称”:“CGST 6%”,
“总数”:10,
},
{
“名称”:“SGST 6%”,
“总数”:10,
},
],
},
{
“税收”:[
{
“名称”:“CGST 2.5%”,
“总计”:16.42,
},
{
“名称”:“SGST 2.5%”,
“总计”:16.42,
},
],
},
{
“税收”:[
{
“名称”:“CGST 2.5%”,
“总计”:0,
},
{
“名称”:“SGST 2.5%”,
“总计”:0,
},
],
},
{
“税收”:[
{
“名称”:“CGST 6%”,
“总数”:12,
},
{
“名称”:“SGST 6%”,
“总数”:12,
},
],
},
];
const result=arr.map(项=>{
返回Object.values(item.taxes.reduce((r,{name,total})=>{
(r[姓名]| |(r[姓名]=[姓名,0]))[1]+=总计;
返回r;
}, {}));
})

控制台日志(结果)我能想到的更简单的解决方案:

const result = {}
arr.forEach(el => {
  el.taxes.forEach(tax => {
    result[tax.name] = (result[tax.name] || 0)+ tax.total
  })
})
const solution = Object.entries(result).map(el => ({name: el[0], total: el[1]}))
console.log(solution)

@阿塔尔·施里瓦斯塔瓦,我感谢你的尝试,这是一个非常简单的解决方案,首先检查条目是否存在,如果不创建条目,则增加条目

代码:

const arr=[{“taxes”:[{“name”:“CGST 2.5%,“total”:4.01},{“name”:“SGST 2.5%,“total”:4.01},]},{“taxes”:[{“name”:“CGST 6%,“total”:10,},{“taxes”:[{“name”:“CGST 2.5%,“total”:16.42},{“name”:“SGST 2.5%,“total”:16.42%,“total”:“taxes”:“SGST 6%,”10,},{“total”:“CGST”},{“taxes”:,{“名称”:“SGST 2.5%,“总计”:0,},]},{“税费”:[{“名称”:“CGST 6%,“总计”:12,},{“名称”:“SGST 6%,“总计”:12},]}];
const result=arr.reduce((结果,{taxes})=>{
用于(税的常量{名称,总计})
如果(结果[名称])
结果[名称]+=总计
其他的
结果[名称]=总计
返回结果;
}, {})

控制台日志(结果)我想我有嵌套数组的问题。你能给我指一下正确的方向吗。我会尝试共享链接也看看这篇文章:。谢谢回复。我尝试了bocdox解决方案,它正在工作。