从 Javascript 中的两个平面结构化数组格式化 JSON
Format JSON from two flat structured array in Javascript
我需要从两个链接在一起的平面结构化数组中创建一个嵌套 JSON,我能够获得第一层但无法将其嵌套在 javascript 中。
下面是问题陈述。
我有 2 个数组:
data = ["HSP - FS", "FS-M", "Lo Co", "GO A", "CQM","whatever"];
type = ["Epic","Sub - Epic","Sub - Epic","Epic","Sub - Epic","Story"];
type
数组和 data
数组链接在一起,类型和描述在同一个索引上,如
type[0]
即 data[0]
,所以它将是 "Epic: HSP-FS",但这并没有到此结束,这个 Epic 还有 child 个元素,它们是 Sub - Epics 和它们的描述放在同一个数组元素下,所以 type[1]
即 "Sub-Epic" 在 data[1]
中有它的数据,即 "FS-M" 等等直到下一个 "Epic" 在类型数组中找到。
所以 JSON 就像
{0:{
Epic: "HSP - FS",
Sub-Epic:"FS-M",
Sub-Epic:"Lo Co"
},
1:{
Epic: "GO A",
Sub-Epic:"CQM",
Story:"whatever"
}}
数组和JSON的结构是固定的,甚至数组可以有任意数量的Epics、子Epics或故事,但顺序将保持在所有child 的 Epics 将在那里直到下一次史诗出现。
问题是我无法编写循环来获取输出..到目前为止我已经尝试过迭代和连接这两个数组
提前感谢您的帮助。
您不能在 JSON 对象中重复命名属性,但您可以改用数组:
var array = [];
for(var i=0; i < data.length; ++i)
{
var t = type[i];
var d = data[i];
if (t == "Epic")
{
array.push({ "Epic": d});
}
else
{
if(typeof(array[array.length-1][t]) == "undefined")
{
array[array.length-1][t] = [];
}
array[array.length-1][t].push(d)
}
}
这是结果 JSON:
[{
"Epic": "HSP - FS",
"Sub - Epic": ["FS-M","Lo Co"]
},
{
"Epic": "GO A",
"Sub - Epic": ["CQM"],
"Story": ["whatever"]
}]
我需要从两个链接在一起的平面结构化数组中创建一个嵌套 JSON,我能够获得第一层但无法将其嵌套在 javascript 中。
下面是问题陈述。
我有 2 个数组:
data = ["HSP - FS", "FS-M", "Lo Co", "GO A", "CQM","whatever"];
type = ["Epic","Sub - Epic","Sub - Epic","Epic","Sub - Epic","Story"];
type
数组和 data
数组链接在一起,类型和描述在同一个索引上,如
type[0]
即 data[0]
,所以它将是 "Epic: HSP-FS",但这并没有到此结束,这个 Epic 还有 child 个元素,它们是 Sub - Epics 和它们的描述放在同一个数组元素下,所以 type[1]
即 "Sub-Epic" 在 data[1]
中有它的数据,即 "FS-M" 等等直到下一个 "Epic" 在类型数组中找到。
所以 JSON 就像
{0:{
Epic: "HSP - FS",
Sub-Epic:"FS-M",
Sub-Epic:"Lo Co"
},
1:{
Epic: "GO A",
Sub-Epic:"CQM",
Story:"whatever"
}}
数组和JSON的结构是固定的,甚至数组可以有任意数量的Epics、子Epics或故事,但顺序将保持在所有child 的 Epics 将在那里直到下一次史诗出现。
问题是我无法编写循环来获取输出..到目前为止我已经尝试过迭代和连接这两个数组
提前感谢您的帮助。
您不能在 JSON 对象中重复命名属性,但您可以改用数组:
var array = [];
for(var i=0; i < data.length; ++i)
{
var t = type[i];
var d = data[i];
if (t == "Epic")
{
array.push({ "Epic": d});
}
else
{
if(typeof(array[array.length-1][t]) == "undefined")
{
array[array.length-1][t] = [];
}
array[array.length-1][t].push(d)
}
}
这是结果 JSON:
[{
"Epic": "HSP - FS",
"Sub - Epic": ["FS-M","Lo Co"]
},
{
"Epic": "GO A",
"Sub - Epic": ["CQM"],
"Story": ["whatever"]
}]