帮我看看哪有问题
var tree = {
name: 'root',
children: [{
name: 'child1',
children: [{
name: 'child1_1',
children: [{
name: 'child1_1_1'
}]
}]
}, {
name: 'child2',
children: [{
name: 'child2_1'
}]
}, {
name: 'child3'
}]
};
function traverseTree(node) {
var child = node.children, arr = [];
if (child) {
for (var i in child) {
if (!child[i].children) {
arr.push({ "name": child[i].name });
} else {
traverseTree(child[i]);
}
}
}
return arr;
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
没什么问题呀,代码逻辑不就是把没有children的元素push到数组arr里边么?你每次递归的时候arr都会被重置,所以数组里只有一个child3。如果你问的是问什么只有一个元素的话,那你需要把arr生命在方法外部。
arr 数组是在
traverseTree内部申明的,每次递归调用都会申明新的 arr = [],一般来说,应该在外面申明一个,通过函数传入吧(或者直接用全局的)