javascript - 如何在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
}]
如上所示,如果价格相同,将它们聚合到一个对象并增加数量并将其返回给我的用户。
解决方案
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)
推荐阅读
- html - 溢出隐藏导致 div 在浮动 div 下方而不是在其后面
- python - 无法从 oracle 数据库验证用户(python 3.8.3 和 django 3.0)
- c# - 泛型方法的 C# 奇怪的内联行为 - 可能的错误
- swiftui - SwiftUI 2.0 / Xcode 12 中父视图和子视图的警报
- machine-learning - 如果我的 Dropout 太高会怎样?在我的 2048 神经元密集层上使用什么 Dropout?(数据很少)
- c - 声明一个函数,c99 的问题
- php - 如何按变量之一的数值对此 JSON 进行排序
- node.js - 为什么我的递归函数(涉及循环中的异步调用)不返回调用者函数以继续循环?
- python - 如何将数字从for循环放入列表
- php - 基于 Elasticsearch 嵌套对象的过滤和计数操作