[英]How to use both map and reduce in same function in javascript?
我想顯示金額的值 122,但我不知道該怎么做。
我有這個價值
const products = [
{
id: 1,
productM: [
{
product: {
productId: 1222,
price: {
currency: 'EUR',
amount: 122,
},
},
},
],
label: 'corner-1',
sourceId: 23333,
},
]
我試過這個 function 但它不起作用,我不知道該怎么做
function getTotalPrice(products) {
const arr = products.map((product) =>
product.productM.map((p) => p.price.amount)
);
return arr.reduce(
(accumulator, product) => accumulator + product,
0
);
}
如果有人可以提供幫助,非常感謝
我認為這會起作用,您假設p
是產品,但實際上p
是整個 object,試試這個:
function getTotalPrice(products) {
const arr = products.map((product) =>
product.productM.reduce(
(total, { product }) => total + product.price.amount,
0
)
);
return arr.reduce((accumulator, product) => accumulator + product, 0);
}
ProductM 是一個數組,所以我將它從 map 更改為減少,以匯總其中的所有 productsM 價格
而不是map
和reduce
. 您只能使用reduce
。
由於products
嵌套了一層,您可以使用reduce
兩次來完成它。
像這樣試試。
function getTotalPrice(products) {
return products.reduce((prev, curr) => {
return (
prev +
curr.productM.reduce((innerPrev, innerCurr) => {
return innerPrev + innerCurr.product.price.amount;
}, 0)
);
}, 0);
}
你不需要 map 任何東西,你可以直接在原始數組上減少:
function getTotalPrice(products) {
return products.reduce((acc, p) => acc + p.productM.product.price.amount, 0);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.