javascript - 如何获得 Reactjs 中嵌套数组的总和?
问题描述
我想获得特定类别中嵌套数组的总价,例如:Hot Drinks。
这是我现在拥有的示例,因此我想过滤掉并仅获取热饮类别的总价格。
[
{
totalPrice: 30,
_id: '6014fa4324e125599eaa72b5',
orderItems: [
{
_id: '6014fa4324e125599eaa747ss',
category: 'Breakfast',
name: 'food name 1',
price: 3,
qty: 1,
},
{
_id: '6014fa4324e125599eaa747s5',
category: 'Hot Drinks',
name: 'drink name 1',
price: 3,
qty: 5,
},
{
_id: '6014fa4324e125599eaa74767',
category: 'Hot Drinks',
name: 'drink name 2',
price: 4,
qty: 2,
},
],
},
{
totalPrice: 23,
_id: '6014fa4324e125599eaa7276e',
orderItems: [
{
_id: '6014fa4324e125599eaa747ss',
category: 'Hot Drinks',
name: 'drink name 1',
price: 3,
qty: 6,
},
],
},
]
解决方案
const filterBy = 'Hot Drinks';
const items = [
{
totalPrice: 30,
_id: '6014fa4324e125599eaa72b5',
orderItems: [
{
_id: '6014fa4324e125599eaa747ss',
category: 'Breakfast',
name: 'food name 1',
price: 3,
qty: 1,
},
{
_id: '6014fa4324e125599eaa747s5',
category: 'Hot Drinks',
name: 'drink name 1',
price: 3,
qty: 5,
},
{
_id: '6014fa4324e125599eaa74767',
category: 'Hot Drinks',
name: 'drink name 2',
price: 4,
qty: 2,
},
],
},
{
totalPrice: 23,
_id: '6014fa4324e125599eaa7276e',
orderItems: [
{
_id: '6014fa4324e125599eaa747ss',
category: 'Hot Drinks',
name: 'drink name 1',
price: 3,
qty: 6,
},
],
},
]
const sumOf = (items, filterBy) => {
let totalPrice = 0;
items.forEach(item => {
item.orderItems.forEach(orderItem => {
if (orderItem.category === filterBy) {
totalPrice += orderItem.price;
}
})
})
return totalPrice;
}
console.log(sumOf(items, filterBy))
推荐阅读
- r - 每 15 分钟进行一次时间序列分析
- kotlin - 如何在 Kotlin recycleview 适配器中更改可见性和文本颜色
- javascript - 如何使用 discord.js 检查权限是否设置为中性(“/”)?
- reactjs - 直接在地址栏中输入或重新加载时,React 不显示页面
- c++ - 如何避免分配后删除班级成员?
- python - 扩展 numpy argmin argmax
- python - AttributeError:“球”对象没有属性“hit_paddle”
- jsp - 如何使用 EL 访问对象列表中的特定项目
- security - 初始设置为安全属性的 Cookie 丢失了安全属性
- pine-script - 使指标在特定时间段内工作