我是Vue JS的新开发人员。下面是我的响应主体,我想将只有is_paid:true
和paid_amount
的amount
值相加。。在Vue JS中有办法做到这一点吗?
EDit:因为它有is_paid:false
,所以对于30(amount
(+20(paid_amount
(加上100
{
"payment" : {
"installment_payment" : {
"installments" : [
amount:30,
date: "",
is_paid: true,
},
{
amount: 100,
date: "",
is_paid: false,
},
{
amount: "",
date: "",
is_paid: false,
},
{
amount: "",
date: "",
is_paid: true,
}
],
remaining: ""
},
paid_amount: 20,
},
}
筛选已付款分期付款。。。。
let installments = apiResponse.payment.installment_payment.installments;
let paidInstallments = installments.filter(obj => obj.is_paid);
使用reduce求和。。。
let totalPaid = paidInstallments.reduce((sum, obj) => sum + parseInt(obj.amount), 0);
演示。。。
let installments = [
{ amount:5, is_paid:true }, { amount:10, is_paid:false },
{ amount:15, is_paid:true }, { amount:20, is_paid:false }
];
// 5 and 15 are paid, so sum should be 20
let paidInstallments = installments.filter(obj => obj.is_paid);
let totalPaid = paidInstallments.reduce((sum, obj) => sum + parseInt(obj.amount), 0);
console.log(totalPaid);
你也可以一次过滤和减少,就像这样。。。
// filter all installments and assign 0 as the payment when is_paid is false
let totalPaid = installments.reduce((sum, obj) => {
const amountPaid = obj.is_paid ? parseInt(obj.amount) : 0;
return sum + amountPaid;
}, 0);
console.log(totalPaid);