JavaScript递归函数,用于将父/子记录转换为嵌套数组

JavaScript递归函数,用于将父/子记录转换为嵌套数组,javascript,arrays,kendo-ui,Javascript,Arrays,Kendo Ui,我有一个Json数组,它的结构非常适合剑道树列表小部件(即非常简单的树列表示例);但是,我现在需要在剑道树映射小部件中呈现相同的数据 因此,源数据是平面的,包含id和parentId字段。我现在需要递归地访问每个节点,并将其转换为嵌套数组 我启动了一个plunk,其中包含平面源数据(文件名为“sourcedata.json”)以及样例目标数据(“treedata.json”),如果运行plunk,当前会呈现剑道树映射 http://plnkr.co/edit/Cmfk8YWdm0uPrdDiJ

我有一个Json数组,它的结构非常适合剑道树列表小部件(即非常简单的树列表示例);但是,我现在需要在剑道树映射小部件中呈现相同的数据

因此,源数据是平面的,包含
id
parentId
字段。我现在需要递归地访问每个节点,并将其转换为嵌套数组

我启动了一个plunk,其中包含平面源数据(文件名为“sourcedata.json”)以及样例目标数据(“treedata.json”),如果运行plunk,当前会呈现剑道树映射

 http://plnkr.co/edit/Cmfk8YWdm0uPrdDiJIfC?p=preview   

这是源代码(仅供参考:“parentId”:null是我的根节点)-

[
{
“id”:0,
“家长ID”:6,
“类型ID”:0,
“field0”:“伦敦”,
“字段2”:5546919.064936
},
{
“id”:1,
“家长ID”:7,
“类型ID”:0,
“field0”:“纽约”,
“字段2”:2297941.24812
},
{
“id”:2,
“家长ID”:5,
“类型ID”:0,
“field0”:“迪拜”,
“字段2”:9832458.096596
},
{
“id”:3,
“家长ID”:6,
“类型ID”:0,
“field0”:“巴黎”,
“字段2”:22700818.88167
},
{
“id”:4,
“家长ID”:8,
“类型ID”:0,
“field0”:“斯德哥尔摩”,
“字段2”:3742748.296602,
},
{
“id”:5,
“家长ID”:9,
“类型ID”:0,
“field0”:“中东”,
“字段2”:9832458.096596,
},
{
“id”:6,
“家长ID”:9,
“类型ID”:0,
“field0”:“欧洲”,
“字段2”:31990486.243208,
},
{
“id”:7,
“家长ID”:9,
“类型ID”:0,
“field0”:“北美”,
“字段2”:2297941.24812,
},
{
“id”:8,
“家长ID”:6,
“类型ID”:0,
“field0”:“斯堪的纳维亚”,
“字段2”:3742748.296602,
},
{
“id”:9,
“parentId”:空,
“类型ID”:0,
“字段0”:“世界”,
“字段2”:44120885.587924,
},
{
“id”:10,
“parentId”:0,
“类型ID”:1,
“field0”:“BOND-1001”,
“字段2”:3985.331955,
},
{
“id”:28,
“parentId”:0,
“类型ID”:1,
“字段0”:“IRSW-08634”,
“字段2”:10307.142591,
},
{
“id”:29,
“parentId”:0,
“类型ID”:1,
“字段0”:“IRSW-08639”,
“字段2”:17116.371459,
},    	
{
“id”:58,
“parentId”:0,
“类型ID”:1,
“字段0”:“BOND-0013”,
“字段2”:19029.816578,
},
{
“id”:59,
“parentId”:0,
“类型ID”:1,
“字段0”:“BOND-0031”,
“字段2”:-237.872707,
},
{
“id”:60,
“parentId”:0,
“类型ID”:1,
“字段0”:“BOND-0034”,
“字段2”:859.61482,
},
{
“id”:61,
“parentId”:0,
“类型ID”:1,
“field0”:“BOND-0037”,
“字段2”:852.099758,
},
{
“id”:62,
“parentId”:0,
“类型ID”:1,
“字段0”:“债券-0043”,
“字段2”:4452.369428,
“字段4”:1
},
{
“id”:63,
“parentId”:0,
“类型ID”:1,
“字段0”:“BOND-0046”,
“字段2”:-2226.184714,
},
{
“id”:64,
“parentId”:0,
“类型ID”:1,
“字段0”:“债券-0049”,
“字段2”:6612.946972,
},
{
“id”:65,
“parentId”:0,
“类型ID”:1,
“字段0”:“债券-0050”,
“字段2”:3844146.217229,
},
{
“id”:66,
“家长ID”:1,
“类型ID”:1,
“字段0”:“BOND-1002”,
“字段2”:3985.331955,
},
{
“id”:67,
“家长ID”:1,
“类型ID”:1,
“field0”:“BOND-1005”,
“字段2”:-2707.4266,
},
{
“id”:68,
“家长ID”:1,
“类型ID”:1,
“field0”:“BOND-1008”,
“字段2”:-2436.68394,
},
{
“id”:69,
“家长ID”:1,
“类型ID”:1,
“字段0”:“债券-1011”,
“字段2”:683.959918,
},
{
“id”:70,
“家长ID”:1,
“类型ID”:1,
“field0”:“BOND-1014”,
“字段2”:54716.79346,
},
{
“id”:71,
“家长ID”:1,
“类型ID”:1,
“field0”:“BOND-1017”,
“字段2”:4027.155999,
},
{
“id”:72,
“家长ID”:1,
“类型ID”:1,
“字段0”:“XCSW-0046”,
“字段2”:604546.163294,
“node2”:2,
“字段3”:498334.387729,
“node3”:3,
“字段4”:1
},
{
“id”:73,
“家长ID”:1,
“类型ID”:1,
“字段0”:“IRSW-08655”,
“field2”:46191.801872,
“node2”:2,
“字段3”:37131.473418,
“node3”:3,
“字段4”:1
},
{
“id”:74,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CF-0012”,
“字段2”:1845434.652127,
“node2”:2,
“字段3”:1438283.786114,
“node3”:3,
“字段4”:1
},
{
“id”:75,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CF-0017”,
“字段2”:46486.869315,
“node2”:2,
“字段3”:36285.674082,
“node3”:3,
“字段4”:1
},
{
“id”:76,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CF-0002”,
“字段2”:-593582.845166,
“node2”:2,
“字段3”:-402546.0446,
“node3”:3,
“字段4”:1
},
{
“id”:77,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CRSW-1002”,
“字段2”:-73496.275293,
“node2”:2,
“字段3”:-5325.413593,
“node3”:3,
“字段4”:1
},
{
“id”:78,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CRSW-1005”,
“字段2”:20670.748989,
“node2”:2,
“字段3”:27954.103116,
“node3”:3,
“字段4”:1
},
{
“id”:79,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CRSW-1008”,
“字段2”:53572.838484,
“node2”:2,
“字段3”:27688.010937,
“node3”:3,
“字段4”:1
},
{
“id”:80,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CRSW-1011”,
“字段2”:58.44961,
“node2”:2,
“字段3”:83.488679,
“node3”:3,
“字段4”:1
},
{
“id”:81,
“家长ID”:1,
“类型ID”:1,
“字段0”:“CRSW-1014”,
“字段2”:-296158.053382,
“node2”:2,
“字段3”:-288493.393334,
“node3”:3,