我有这样的数据:
[{
"Key":"A",
"Data":"1"
},
{
"Key":"B",
"Data":"2"
},
{
"Key":"C",
"Data":"12"
},
{
"Key":"A",
"Data":"6"
},
{
"Key":"B",
"Data":"4"
}]
我想要的输出是:
[
{
"Key":"A",
"Value":[{"Data":"1"},{"Data":"6"}]
},
{
"Key":"B",
"Value":[{"Data":"2"},{"Data":"4"}]
},
{
"Key":"C",
"Value":[{"Data":"12"}]
}
]
我希望动态地在Javascript或TypeScript中输出这样的输出,因为我将这个json数据动态化。
有人可以帮忙吗。
答案 0 :(得分:0)
你可以这样做:
let data = [{
"Key":"A",
"Data":"1"
},
{
"Key":"B",
"Data":"2"
},
{
"Key":"C",
"Data":"12"
},
{
"Key":"A",
"Data":"6"
},
{
"Key":"B",
"Data":"4"
}];
let groupedData = data.reduce((results, item) => {
results[item.Key] = results[item.Key] || [];
results[item.Key].push(item.Data);
return results;
}, {});
console.log(groupedData);
答案 1 :(得分:0)
您可以使用哈希表并按Key
属性对项目进行分组。
如果该组不存在,请使用密钥和Values
数组创建一个新组。十把新对象puth到结果数组。稍后将实际值推送到Values
数组。
var data = [{ Key: "A", Data: "1" }, { Key: "B", Data: "2" }, { Key: "C", Data: "12" }, { Key: "A", Data: "6" }, { Key: "B", Data: "4" }],
hash = Object.create(null),
result = data. reduce(function (r, o) {
if (!hash[o.Key]) {
hash[o.Key] = { Key: o.Key, Value: [] };
r.push(hash[o.Key]);
}
hash[o.Key].Value.push({ Data: o.Data });
return r;
}, []);
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }