循环嵌套的json数组对象和求和值javascript
问题描述:
我想创建一个新的对象与OrgID,名称和值与唯一的OrgID。循环嵌套的json数组对象和求和值javascript
数据:
{
"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"
}
}
例如以下:编号0和1应该发生,并且第三和,因为它是第四ID的总和。
Final Object = [
{1, A, 94521},
{2, C, 75463},
{3, D, 56743}
];
我试过使用嵌套for循环和减少。但我无法得到我需要的结果。
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})
);
答
试试这个,是它的理想结果吗?
var data = [
{
"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"
}
}
];
var res = {};
res = Object.keys(data.reduce((res, curr) => {
res[curr.Organisations.OrgID] = res[curr.Organisations.OrgID] || {
OrgID: curr.Organisations.OrgID,
Name: curr.Organisations.Name,
Value: 0
};
res[curr.Organisations.OrgID].Value += parseInt(curr.Value);
return res;
}, res)).map(key => res[key]);
console.log(res);
你'最后Object'数组不包含适当的JS对象。 – Redu
这只是一个例子。但我会有一个包含3个元素的对象数组 –
我只是想要一种方法去下一层来检查id,然后相应地对这些值求和。 –