gpt4 book ai didi

Javascript 树结构到数组的转换

转载 作者:行者123 更新时间:2023-11-29 20:54:30 24 4
gpt4 key购买 nike

我正在处理 TreeView ,我构建了一个简单的节点类:它由一个名称和一个子数组组成:

class Node {
constructor(name, childNodes) {
this.name = name;
this.childNodes = childNodes;
}
}

现在我的目标是创建一个返回如下对象的函数:

var tree = [
{
text: 'Parent 1',
nodes: [
{
text: 'Child 1',
nodes: [
{
text: 'Grandchild 1'
}
]
},
{
text: 'Child 2'
}
]
},
{
text: 'Parent 2'
},
];

我尝试使用递归方法。它以一个空数组开始并添加子项直到没有更多:

function recTreeview(currentNode, treeview) {
var tempChildren = [];
currentNode.childNodes.forEach(child => {
tempChild.push(recTreeview(child, treeview));
});
return treeview.push({
text: currentNode.name,
nodes: tempChildren
})
}

但是递归 Treeview 函数一定是错误的。当我创建树并尝试在 chrome 开发控制台中打开它时,它只显示一个“5”而不是类似 (5) [{…}, {…}, {…}, {…}, {…} ].我做错了什么?

tree = recTreeview(parent, []);
tree;

最佳答案

您返回的是 push 的结果,而不是实际的 treeview

根据 Array.prototype.push() docs

Return value
The new length property of the object upon which the method was called.


所以不是 return treeview.push(...)treeview.push(...) 然后 return treeview

function recTreeview(currentNode, treeview) {
var tempChildren = [];
currentNode.childNodes.forEach(child => {
tempChild.push(recTreeview(child, treeview));
});
treeview.push({
text: currentNode.name,
nodes: tempChildren
});

return treeview;
}

关于Javascript 树结构到数组的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com