Совокупное количество продуктов типа Х в javascript - PullRequest
0 голосов
/ 19 февраля 2020

Это так: каждый заказ может содержать много типов, с различными количествами. Я хочу, чтобы для каждой позиции заказа было общее количество для каждого типа.

[{
  "order" : 1,
  "orderDetails" : [{
    "quantity" : 10,
    "product" : {
      "productType" : "A"
    },
    "quantity" : 20,
    "product" : {
      "productType" : "A"
    },
    "quantity" : 10,
    "product" : {
      "productType" : "B"
    }
  }]
}]

это мой код, он выполняет свою работу, но я пытаюсь сделать его немного более элегантным, так или иначе. Я уверен, что там есть избыточный код, я не уверен, что правильно использую Reduce

    const orders = data.map(h => {
    const newArray = [];
    h.orderDetails_ = h.orderDetails.reduce(function(a, b, i) {
        if (newArray[b.product.productType] == undefined) {
          newArray[b.product.productType] = b.quantity;
          return newArray;  
        } else {
          newArray[b.product.productType] += b.quantity;
          return newArray;
        }
      }, 0);
      return h;
    });

1 Ответ

0 голосов
/ 19 февраля 2020

ну, для всех, это лучшая и правильная версия

    const orders = data.map(h => {
      h.orderDetails_ = h.orderDetails.reduce((orderTotals, order) => {
        orderTotals[order.product.productType] =
          (orderTotals[order.product.productType] || 0) + order.quantity;
        return orderTotals;
      }, {});
      return h;
    });
...