带有map和reduce的JS条件


{
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; }

最新更新