首页 > 解决方案 > 如何在javascript中获取数组的聚合

问题描述

我正在尝试将我在数据库中获取的订单列表汇总为一系列不同价格的订单。

我的数据库中的数组示例:

[{
id: 1,
price: 10,
item: 'apple'
}, {
id: 2,
price: 10,
item: 'apple',
}, {
id: 3,
price: 20,
item: 'apple'
}]

我想根据价格汇总订单...如果价格相同,请将它们放入一个数组

我要返回的内容:

[{
price: 10,
item: 'apple',
quantity: 2
}, {
price: 20,
item: apple,
quantity: 1
}]

如上所示,如果价格相同,将它们聚合到一个对象并增加数量并将其返回给我的用户。

标签: javascriptnode.jstypescriptalgorithm

解决方案


const data = [{
  id: 1,
  price: 10,
  item: 'apple'
}, {
  id: 2,
  price: 10,
  item: 'apple',
}, {
  id: 3,
  price: 20,
  item: 'apple'
}];

let x = data.reduce((items, item) => {
  let found = false;
 delete(item.id)
  items.forEach(el => {
    if (el.price == item.price && el.item == item.item) {
      found = true;
      el.quantity++;
    }
  })
  if (!found) {
    item.quantity = 1;
    items.push(item)
  }


  return items
}, [])


console.log(x)


推荐阅读