【发布时间】:2016-11-05 23:21:42
【问题描述】:
我想创建一个具有 OrgID、名称和值且具有唯一 OrgID 的新对象。
数据:
{
"id":0,
"Value": "12345"
"Organisations"
{
"OrgID": "1",
"Name": "A"
}
},
{
"id":1,
"Value": "74790"
"Organisations"
{
"OrgID": "1",
"Name": "A"
}
}, {
"id":2,
"Value": "89668"
"Organisations"
{
"OrgID": "2",
"Name": "C"
}
},
{
"id":3,
"Value": "23559"
"Organisations"
{
"OrgID": "3",
"Name": "D"
}
}
对于下面的示例:id 0 和 1 的总和应该出现,而第 3 和第 4 id 应该是这样。
Final Object = [
{1, A, 94521},
{2, C, 75463},
{3, D, 56743}
];
我尝试使用嵌套的 for 循环和 reduce。但我无法得到我需要的结果。
var result = Array.from(
data.reduce((organisations, obj) =>
organisations.set(obj.organisations.Name,
(organisations.get(obj.organisations.Name) || 0) + +obj.Value),
new Map()),
([organ, sum]) => ({organ,sum})
);
【问题讨论】:
-
您的
Final Object数组不包含正确的 JS 对象。 -
这只是一个例子。但我将拥有一个包含 3 个元素的对象数组
-
我只是想要一种方法可以向下一层检查 id,然后相应地对值求和。
-
我认为缺少答案的原因是输入数据和预期输出在任何语言中都完全无效?无论如何 -> jsfiddle.net/evy0keo6
-
OrgID是关键,我创建了一个对象,因为您发布的作为应该返回的示例的内容完全是废话。
标签: javascript arrays json d3.js