簡體   English   中英

如何在 javascript 中同時使用 map 和減少相同的 function?

[英]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 價格

而不是mapreduce . 您只能使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM