我需要创建一个函数,能够将扁平对象转换为递归对象。以下是我的示例:
我有一个扁平数组:
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",
}
}
]
请帮助我找到正确的方法。最好能提供可行的算法,因为我在理解如何正确操作时遇到了问题。我需要在递归结构中找到已检查元素的特定位置,并将其推入已找到的元素子数组中。我认为这很愚蠢和低效。有没有更快更高效的方法?
编辑:递归数组格式错误,现在已更正。我的数组没有任何排序。
var recoursiveArray = []; recoursiveArray.push(flatArray[0]); recoursiveArray[0].children = []; recoursiveArray[0].children.push(flatArray[1]);
- Dima Gimburg'L'
对象的父级不应该是null
,而应该是'c8e63b35'
吗? - Oka