我在Javascript中遇到了递归问题。我有一些JSON,我正在传递给一个函数。我正在尝试将它从JSON转换为Javascript对象。我的问题是代码只返回FIRST CHILD,而不是第二个(标记为'dir3')。有没有人有建议?非常感谢您的时间。
JSON输入:
var dirList = {"name": "topdir", "subdirs":
[
{"name": "dir2", "subdirs":
[
{"name": "dir2a", "subdirs": []},
{"name": "dir2b", "subdirs": []}
]},
{"name": "dir3", "subdirs": []}
]}; //valid JSON
Javascript功能:
getChildren = function(dir) {
dir.children = [];
if (dir.subdirs.length == 0) {
return [];
} else {
for (i=0; i<dir.subdirs.length; i++){
dir.children.push({text: dir.subdirs[i].name, leaf: false, expanded: true, children: getChildren(dir.subdirs[i])});
}
return dir.children;
}
};
答案 0 :(得分:1)
确保将for循环中的计数器声明为函数中的局部变量。
for (var i=0; i<dir.subdirs.length; i++){
它正在使用全局变量i
,这导致循环提前结束(其他一个通过函数的传递将其设置为0)。