树形结构转一维
利用栈实现树形结构转一维,效率可能更高,避免递归反复执行上下文引起的帧栈溢出
javascript
let tree = [
{
name: "home",
meta: {
title: "home",
icon: "home"
}
},
{
name: "home2",
meta: {
title: "home",
icon: "home"
}
},
{
name: "common-components",
meta: {
title: "common-components",
icon: "set"
},
children: [
{
name: "form-component",
meta: {
title: "form-component",
icon: "common"
}
}
]
},
{
name: "multilevel-menu",
meta: {
title: "multilevel-menu",
icon: "switch"
},
children: [
{
name: "second-menu",
meta: {
title: "second-menu",
icon: "common"
},
children: [
{
name: "third-menu",
meta: {
title: "third-menu",
icon: "common"
}
}
]
}
]
}
]
function linearArray(nodes) {
const result = [];
while (nodes.length) {
const next = nodes.pop();
if (Array.isArray(next.children)) {
nodes.push(...next.children);
}
result.push(next);
}
return result.reverse();
}
console.log(linearArray(tree))