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