gpt4 book ai didi

javascript - 使非规范化的 JSON 分层

转载 作者:行者123 更新时间:2023-11-30 12:46:33 24 4
gpt4 key购买 nike

我正在处理非规范化的 JSON 结构,但我需要嵌套的 JSON 以在客户端的多个级别上迭代它们。我不知道如何优雅地做到这一点。

你能想到如何轻松转换表单的JSON

[{ category: xyz, attribute: 1},{ category: xyz, attribute: 2}] 

转化为分层格式:

[{category: xyz, attributes: [1,2]}] ?

非常感谢任何解决方案。

最佳答案

我一直这样做,虽然通常是在服务器端。代码看起来像这样:

function normalize(key, outputKey, data)
{
var results = [];
var record;

for(var i=0; i<data.length; i++)
{
if(!record || record[key] != data[i][key])
{
record = {};
record[outputKey] = [];
record[key] = data[i][key];
results.push(record);
}

delete data[i][key];
record[outputKey].push(data[i]);
}

return results;
}

这是输出:

[
{
"category": "xyz",
"values": [
{ "attribute": 1 },
{ "attribute": 2 }
]
}
]

请注意,您的示例输出一团糟。您可能想要决定是否尝试对数组的对象或值进行分组。后者更容易。

编辑:当然,您正在寻找无聊的答案。给你:

function collapse(key, attr, data)
{
var results = [];
var record;

for(var i=0; i<data.length; i++)
{
if(!record || record[key] != data[i][key])
{
record = data[i];
record[attr] = [data[i][attr]];
results.push(record);
}
else
{
record[attr].push(data[i][attr]);
}
}

return results;
}

如果你这样调用它:

var data = [{ category: 'xyz', attribute: 1},{ category: 'xyz', attribute: 2}];
collapse('category', 'attribute', data);

你会得到这样的输出:

[{"category":"xyz","attribute":[1,2]}]

关于javascript - 使非规范化的 JSON 分层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334906/

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