javascript - 按对象类别查找多个数组的深度嵌套数组数据的总和
问题描述
我有一个函数,它返回包含 2 个数组的 2 个单独的数组。
[Array(3), Array(3)]
[Array(3), Array(3)]
这些嵌套数组每个包含 6 个对象
{value: "10.50", category: "a"},
{value: "55.50", category: "a"}
{value: "10.50", category: "b"},
{value: "35.50", category: "b"},
{value: "15.50", category: "c"},
{value: "45.50", category: "c"}
我正在尝试遍历每个主要的 2 个数组并按如下类别返回嵌套数组的总和值: 请记住,该值当前是一个字符串。
[
[
{value: "66.00", category: "a"},
{value: "46.00", category: "b"},
{value: "61.00", category: "c"},
]
]
我已经尝试了下面的方法,但我似乎做错了,我查看了许多 SO 线程,我知道有很多类似的线程,但到目前为止没有什么对我有用。TIA。
我可怜的尝试。
const x = array.forEach((data) => {
data.reduce(function (
acc: any[],
val: { category: string; value: string }
) {
const o = acc
.filter(function (obj) {
return obj.category === val.category;
})
.pop() || { category: val.category, value: 0 };
o.value += parseFloat(String(val.value));
acc.push(o);
return acc;
},
[]);
});
解决方案
听起来你只需要组合成一个由 索引的对象category
,将值相加,确保将字符串强制转换为数字,然后再将其转换回对象数组:
const outerArr = [
[
{value: "10.50", category: "a"},
{value: "55.50", category: "a"},
{value: "10.50", category: "b"},
{value: "35.50", category: "b"},
{value: "15.50", category: "c"},
{value: "45.50", category: "c"}
],
// etc
];
const final = outerArr.map((subarr) => {
const grouped = {};
for (const { value, category } of subarr) {
grouped[category] = (grouped[category] || 0) + Number(value);
}
return Object.entries(grouped).map(([category, value]) => ({ value: value.toFixed(2), category }));
});
console.log(final);
推荐阅读
- sharepoint-online - 如果当前站点的底层 o365 组是公共的还是私有的,如何签入 sharepoint spfx 组件?
- r - 如何从多个文本中识别和检索多个模式?
- python - 模拟类为所有属性返回相同的值
- c++ - 制作马赛克图像(位图格式)
- authentication - 使用 Google Cloud Database (Bigtable) 的 Web 应用身份验证/安全最佳实践
- r - 从R函数中的文本文件导入方程
- postgresql - postgres逻辑复制中可以将多少数据复制到发布者
- r - 如何从 R 中的列表中提取子元素旁边的元素?
- android - 带有空响应正文的 Twitter oauth/request_token 200 代码
- c++ - 将接口对象传递给构造函数c++?