用Javascript从两个平面结构数组中格式化JSON

Format JSON from two flat structured array in Javascript

本文关键字:结构 平面 数组 JSON 格式化 两个 Javascript      更新时间:2024-02-03

我需要用两个链接在一起的扁平结构数组制作一个嵌套的JSON,我可以获得第一级,但不能将其嵌套在javascript中。

以下是问题陈述。

我有两个阵列:

data = ["HSP - FS", "FS-M", "Lo Co", "GO A", "CQM","whatever"];
type = ["Epic","Sub - Epic","Sub - Epic","Epic","Sub - Epic","Story"];

CCD_ 1数组和CCD_ 2数组链接在一起,并且具有类似的相同索引上的类型和描述

type[0]data[0],所以它将是"Epic:HSP-FS",但这并没有到此结束,这个Epic也有子元素是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的结构是固定的,即使数组也可以有任何数量的史诗、子史诗或故事,但顺序将保持不变,因为所有史诗的子代都会在那里,直到下一次发生史诗。

问题是我无法编写循环以获得输出。。到目前为止,我已经尝试过迭代和连接这两个阵列

提前感谢您的帮助。

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"]
 }]