gpt4 book ai didi

javascript - 对对象数组中的嵌套数组求和

转载 作者:行者123 更新时间:2023-12-01 02:39:55 25 4
gpt4 key购买 nike

我有一个 react 组件,其状态如下所示:

this.state = {
categoryGroups: [
{
groupName: 'Immediate Obligations',
budgeted: '5,000.00',
activity: '3,275.76',
subcategories: [
{
category: 'food',
budgeted: '500.00',
activity: '300.76'
},
{
category: 'rent',
budgeted: '1,000.00',
activity: '1,000.00'
}
]
},
{
groupName: 'True Expenses',
budgeted: '2,000.00',
activity: '1,000.33',
subcategories: [
{
category: 'Car Insurance',
budgeted: '60.00',
activity: '60.00'
},
{
category: 'Gas',
budgeted: '100.00',
activity: '34.50'
}
]
}
]
}

我想查找每个类别组中所有子类别的总预算金额。我怎样才能做到这一点?

最佳答案

您可以通过一个简单的 for 循环来实现这一点。不过,JavaScript 在数组上提供了一些不错的函数。

参见Mozilla's Documentation .

总结一下,Array.prototype.reduce我想到了。您可以使用它,例如如下:

this.state.categoryGroups.reduce(sumCategoryGroups, 0);

function sumCategoryGroups(sum, categoryGroup) {
return sum + categoryGroup.subcategories.reduce(sumSubCategories, 0);
}

function sumSubCategories(sum, subCategory) {
return sum + subCategory.budgeted;
}

编辑:由于我没有意识到预算金额存储为字符串,因此上述解决方案可能不会达到提出问题的用户的预期目的。

根据您对数字字符串始终以相同方式格式化的确定程度,您可以使用如下所示的内容:

function budgetToNumber(budgetString) {
return Number(budgetString.replace(/,/g, ''));
}

将之前的代码更改为:

this.state.categoryGroups.reduce(sumCategoryGroups, 0);

function sumCategoryGroups(sum, categoryGroup) {
return sum + categoryGroup.subcategories.reduce(sumSubCategories, 0);
}

function sumSubCategories(sum, subCategory) {
return sum + budgetToNumber(subCategory.budgeted);
}

请注意,但在很多情况下这样做可能是危险的;即当预算金额的格式发生变化时。

关于javascript - 对对象数组中的嵌套数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47643307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com