{
change: "credit"
currency: "EUR"
value: "30.00"
}
{
change: "debit"
currency: "EUR"
value: "15.00"
}
这正在工作并返回正确的结果:
const totalMovements = customerMovements.map(a => parseFloat(a.value).reduce((acc, n) => acc + n)
我想要change === 'credit'
的值的总和。结果应该是30。当我添加"更改"条件时,这不起作用,有人能帮忙吗?:
const totalMovements = customerMovements.map(a => parseFloat(a.value) && a.change === 'credit').reduce((acc, n) => acc + n)
在第二个例子中,您在map
中返回了一个布尔值,因此您最终减少的数组只是一个布尔数组。[true, false].reduce(...
。
看起来你想先赊账filter()
,然后再合计?
const customerMovements = [{ change: 'credit', currency: 'EUR', value: '30.00', }, { change: 'debit', currency: 'EUR', value: '15.00', },];
const totalMovements = customerMovements
.map((a) => parseFloat(a.value))
.reduce((acc, n) => acc + n, 0);
console.log(totalMovements);
const totalCredits = customerMovements
.filter(({ change }) => change === 'credit')
.map((a) => parseFloat(a.value))
.reduce((acc, n) => acc + n, 0);
console.log(totalCredits);
您也可以只使用Array.reduce()
来获得结果,无论哪种方式都可以!
const customerMovements = [ { change: "credit", currency: "EUR", value: "30.00" }, { change: "debit", currency: "EUR", value: "15.00" } ]
const totalMovements = customerMovements.reduce((acc, { value, change }) => {
return acc + (change === 'credit' ? parseFloat(value): 0)
}, 0)
console.log(totalMovements)
.as-console-wrapper { max-height: 100% !important; top: 0; }