gpt4 book ai didi

javascript - 转换 JSON 格式(分组依据)

转载 作者:行者123 更新时间:2023-12-04 02:21:48 25 4
gpt4 key购买 nike

我有这样的 JSON 对象:

[{
"name" : "cat",
"value" : 17,
"group" : "animal",
},
{
"name" : "dog",
"value" : 6,
"group" : "animal",
},
{
"name" : "snak",
"value" : 2,
"group" : "animal",
},
{
"name" : "tesla",
"value" : 11,
"group" : "car",
},
{
"name" : "bmw",
"value" : 23,
"group" : "car",
}]

我想通过 JS 将此 JSON 转换为以下格式:
[{
"name":"animal",
"children":[
{"name":"cat", "value":17},
{"name":"dog", "value":6},
{"name":"snak", "value":2}
]},
{
"name":"car",
"children":[
{"name":"bmw", "value":11},
{"name":"tesla", "value":23}
]}]

我尝试通过 Reduce 转换和过滤功能,但我无法转换为这种格式。

编辑:

我测试的代码是这样的。
let groupBy = function(xs, key) {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
}, {});
};

let groubedByExchange=groupBy(JSON_data, 'group');

最佳答案

您可以构建一个数组并在数组中搜索相同的组。

var array = [{ name: "cat", value: 17, group: "animal" }, { name: "dog", value: 6, group: "animal" }, { name: "snak", value: 2, group: "animal" }, { name: "tesla", value: 11, group: "car" }, { name: "bmw", value: 23, group: "car" }],
result = array.reduce((r, { group: name, ...object }) => {
var temp = r.find(o => o.name === name);
if (!temp) r.push(temp = { name, children: [] });
temp.children.push(object);
return r;
}, []);

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

关于javascript - 转换 JSON 格式(分组依据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54756136/

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