Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 和嵌套数组_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript 和嵌套数组

Javascript 和嵌套数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我在一个对象数组中有一个数组,我想对嵌套数组中的值求和 [{BenefitType:'401k', Beneficiaries: [{Name: 'PersonA', Percentage: 20}, {Name: 'PersonB', Percentage: 30}, {Name: 'PersonC', Percentage: 50}] }, {BenefitType:'IRA', Beneficiari

我在一个对象数组中有一个数组,我想对嵌套数组中的值求和

[{BenefitType:'401k',
   Beneficiaries: [{Name: 'PersonA', Percentage: 20},
                   {Name: 'PersonB', Percentage: 30},
                   {Name: 'PersonC', Percentage: 50}]
},
 {BenefitType:'IRA',
   Beneficiaries: [{Name: 'PersonA', Percentage: 15},
                   {Name: 'PersonB', Percentage: 45},
                   {Name: 'PersonC', Percentage: 40}]
}];
我想按福利类型将所有百分比相加,以便
401k=100
IRA=100

我有以下代码,但它给出了百分比的总计,而不是每种福利类型的总计:

var myTotal = 0;

for(var i = 0; i < data.benefit_type.length; i++) {
    for(var j=0; j < data.benefit_type[i].beneficiaries.length; j++) {
        myTotal += parseInt(data.benefit_type[i].beneficiaries[j].percentage); 
        data.benefit_type[i].percent_total = myTotal;

    } 
}
var myTotal=0;
对于(变量i=0;i
我缺少什么来修复此问题?

您可以使用
.forEach()
迭代所有对象,并使用
.reduce()
对内部数组求和:

let数组=[{BenefitType:'401k',
受益人:[{姓名:'人物',百分比:20},
{Name:'PersonB',百分比:30},
{Name:'PersonC',百分比:50}]
},
{BenefitType:'IRA',
受益人:[{姓名:'人物',百分比:15},
{Name:'PersonB',百分比:45},
{Name:'PersonC',百分比:40}]
}];
forEach(x=>x.TotalPercentage=x.reduce((val,cur)=>val+cur.Percentage,0));
console.log(数组)
您可以使用
.forEach()
迭代所有对象,并使用
.reduce()
对内部数组求和:

let数组=[{BenefitType:'401k',
受益人:[{姓名:'人物',百分比:20},
{Name:'PersonB',百分比:30},
{Name:'PersonC',百分比:50}]
},
{BenefitType:'IRA',
受益人:[{姓名:'人物',百分比:15},
{Name:'PersonB',百分比:45},
{Name:'PersonC',百分比:40}]
}];
forEach(x=>x.TotalPercentage=x.reduce((val,cur)=>val+cur.Percentage,0));

console.log(数组)可能重复的可能重复为什么必须使用map和reduce?为什么不直接使用reduce?@corykliser你说得对,我已经根据OP试图实现的目标修改并简化了我的答案。为什么你必须使用map和reduce?为什么不简化呢?@corykliser你说得对,我已经根据OP试图实现的目标修改并简化了我的答案