我需要创建能够将平面对象转换为递归对象的功能。这是我的例子: 我有平面数组:将平面结构转换为分层结构
var flatArray = [
{
Description: "G",
guid: "c8e63b35",
parent: null,
},
{
Description: "Z",
guid: "b1113b35",
parent: "c8e63b35",
},
{
Description: "F",
guid: "d2cc2233",
parent: "b1113b35",
},
{
Description: "L",
guid: "a24a3b1a",
parent: null,
},
{
Description: "K",
guid: "cd3b11caa",
parent: "a24a3b1a",
},
]
的结果应该是:
recursiveArray = [
{
Description: "G",
guid: "c8e63b35",
parent: null,
Children: [
{
Description: "Z",
guid: "b1113b35",
parent: "c8e63b35",
Children: [
{
Description: "F",
guid: "d2cc2233",
parent: "b1113b35",
}
]
},
]
},
{
Description: "L",
guid: "a24a3b1a",
parent: null,
Children: [
{
Description: "K",
guid: "cd3b11caa",
parent: "a24a3b1a",
}
}
]
请帮我看看这样做的方式。一个有效的算法将不胜感激,因为我有理解如何正确地做到这一点的问题。在每种情况下,我需要为递归结构中的checked元素查找特定位置,并将其推送到finded元素children数组中。我认为这很愚蠢和低效。有什么办法可以做到这一点快速和高效?
编辑:递归数组格式错误。现在应该没问题。 我的数组没有以任何方式排序。
,你可以这样做: 'VAR recoursiveArray = []; recoursiveArray.push(flatArray [0]);recoursiveArray [0] .children = []; recoursiveArray [0] .children.push(flatArray [1]);' –
不应该''L''对象有''c8e63b35''作为它的父类,而不是'null'? – Oka
是你的数组以某种方式排序? – franciscod