Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 使用reduce获取对象的和_Javascript_Arrays - Fatal编程技术网

Javascript 使用reduce获取对象的和

Javascript 使用reduce获取对象的和,javascript,arrays,Javascript,Arrays,我想得到SelectedDS数组中所有细节的总和 return [ { id: 1244, name: "Installment 1", amount: 10000, due_date: new Date(), particulars: [ { id: 2415123, name: "Development

我想得到SelectedDS数组中所有细节的总和

return [
      {
        id: 1244,
        name: "Installment 1",
        amount: 10000,
        due_date: new Date(),
        particulars: [
          {
            id: 2415123,
            name: "Development Fee",
            amount: 5000,
          },
          {
            id: 14123,
            name: "Library Fee",
            amount: 3000,
          },
          {
            id: 5123151,
            name: "Sports Fee",
            amount: 2000,
          },
        ]
      },
      {
        id: 1412,
        name: "Installment 2",
        amount: 6000,
        due_date: new Date(),
        particulars: [
          {
            id: 414,
            name: "Development Fee",
            amount: 5000,
          },
          {
            id: 5123,
            name: "Library Fee",
            amount: 3000,
          },
          {
            id: 515151,
            name: "Sports Fee",
            amount: 2000,
          },
        ]
在对象中,我想得到SelectedDS数组中所有细节的总和。 我试图使用数组函数来获得结果。这就是我能想到的

const selectedInstallments = this.studentInstallments
        .filter((installment) =>
          installment.particulars.some((particular) =>
            this.selectedParticulars.includes(particular.id)
          )
        )
        .map((installment) => installment.particulars);
      console.log(selectedInstallments);
      const sumParticularReducer = (acc, current) => {
        return acc;
      };
我不知道如何使用reduce来获得结果。

类似于:

const selectedds=[14123414];
常量IDSRARY=[{
id:1244,
名称:“第一期”,
金额:10000,
到期日:新日期(),
详情:[{
身份证号码:2415123,
名称:“开发费”,
金额:5000,
},
{
id:14123,
名称:“图书馆费”,
金额:3000,
},
{
身份证号码:5123151,
名称:“运动费”,
金额:2000,
},
]
},
{
id:1412,
名称:“第二期”,
金额:6000,
到期日:新日期(),
详情:[{
id:414,
名称:“开发费”,
金额:5000,
},
{
身份证号码:5123,
名称:“图书馆费”,
金额:3000,
},
{
身份证号码:515151,
名称:“运动费”,
金额:2000,
},
]
}
]
const sum=idsrarray.reduce((sum,value)=>sum+value.details.reduce(
(partSum,partValue)=>selectedds.includes(partValue.id)?(partSum+partValue.amount):partSum,0),
0
);
控制台日志(总和)
const数据=[{
id:1244,
名称:“第一期”,
金额:10000,
到期日:新日期(),
详情:[{
身份证号码:2415123,
名称:“开发费”,
金额:5000,
},
{
id:14123,
名称:“图书馆费”,
金额:3000,
},
{
身份证号码:5123151,
名称:“运动费”,
金额:2000,
},
]
},
{
id:1412,
名称:“第二期”,
金额:6000,
到期日:新日期(),
详情:[{
id:414,
名称:“开发费”,
金额:5000,
},
{
身份证号码:5123,
名称:“图书馆费”,
金额:3000,
},
{
身份证号码:515151,
名称:“运动费”,
金额:2000,
},
]
}
]
const selectedds=[14123414];
const result=selectedIds.reduce(
(acc,id)=>acc+data.REDUCT(
(acc,{详情})=>
acc+(详情。查找(p=>p.id==id)?。金额| | 0)
, 0)
, 0)
console.log(结果)
请尝试此代码

const selectedIds = [14123, 414];
const sum = arr.reduce((prev, cur) => {
    return prev + cur.particulars.reduce((old, item) => (
        selectedIds.indexOf(item.id) >= 0 ? old + item.amount : old
    ), 0);
}, 0);

console.log(sum);

谢谢因此,在内部减速器函数中,我们检查SelectedId是否与项的id匹配,如果匹配,则添加累加器(旧),否则只返回旧的?是的,很简单
const selectedIds = [14123, 414];
const sum = arr.reduce((prev, cur) => {
    return prev + cur.particulars.reduce((old, item) => (
        selectedIds.indexOf(item.id) >= 0 ? old + item.amount : old
    ), 0);
}, 0);

console.log(sum);