gpt4 book ai didi

javascript - 使用 Underscore 将嵌套 JSON 展平为键控值数组

转载 作者:行者123 更新时间:2023-12-03 08:05:23 25 4
gpt4 key购买 nike

从我的服务器 REST API 中,我请求一个具有以下结构的 JavaScript 对象:

[
{
"msgID": 3,
"admTag": {
"tagName": "Employee"
}
},
{
"msgID": 3,
"admTag": {
"tagName": "Safety"
}
},
{
"msgID": 3,
"admTag": {
"tagName": "Performance"
}
},
{
"msgID": 7,
"admTag": {
"tagName": "Role Based Training"
}
},
{
"msgID": 7,
"admTag": {
"tagName": "Account Service Information"
}
},
{
"msgID": 6,
"admTag": {
"tagName": "Consumer Product Safety Improvement"
}
}
]

要在客户端上使用此对象,我需要将结构转换为按 msgID 属性进行分组,并为其分配一个包含关联 tagName 值的数组。 。就像这样:

[{
"3": ["Employee","Safety","Performance"],
"7": ["Role Based Training","Account Service Information"],
"6": ["Consumer Product Safety Improvement"]
}]

我可以使用嵌套的 for 循环来完成此操作,但我知道使用下划线可以更有效地完成此操作并且使用更少的代码。使用 groupBy 我可以获得 msgID 的分组,这为我提供了我需要的 key :

_.groupBy(tags.tags, function(model){ 
return model.msgID;
});

...但我不确定如何从结果对象中“提取”tagNames 并将它们分配给正确的 msgID。

非常感谢对此的任何帮助!

最佳答案

纯 JavaScript 的解决方案。只需四行代码。

var array = [{ "msgID": 3, "admTag": { "tagName": "Employee" } }, { "msgID": 3, "admTag": { "tagName": "Safety" } }, { "msgID": 3, "admTag": { "tagName": "Performance" } }, { "msgID": 7, "admTag": { "tagName": "Role Based Training" } }, { "msgID": 7, "admTag": { "tagName": "Account Service Information" } }, { "msgID": 6, "admTag": { "tagName": "Consumer Product Safety Improvement" } }],
result = {};

array.forEach(function (a) {
result[a.msgID] = result[a.msgID] || [];
result[a.msgID].push(a.admTag.tagName);
});

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

关于javascript - 使用 Underscore 将嵌套 JSON 展平为键控值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34401711/

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