在普通的javascript中,我试图创建一个函数,该函数将返回文件夹,其子文件夹和任何文件的树结构(json)。我正在尝试使用递归来实现这一点。 以下代码的问题在于,它在第一次递归调用后停止。
我知道在JS中您确实要进行引用,并且我需要创建一个新对象,然后将上一次调用中的值传递给该对象,但是我为此很努力。
function fun(file,json) {
var tempJson = {
'name' : json.name || '','children' : obj.children || new Object()
};
if (file.type == 'file') {
tempJson.type = 'file';
tempJson.children = {}; // this will be empty,since there are no children
}
else {
tempJson.type = 'dir';
var listed = file.listFiles();
if (listed.length > 0) {
for each (var item in listed) {
tempJson.children = fun(item,tempJson);
}
} else {
tempJson.children = {};
}
}
return tempJson;
}
示例
通过目录结构,例如:
-root
--file1
--dir1
---file1.1
--dir2
我想要一个像这样的json
{
name: 'root',type: 'dir',children : [
{
name: 'file1',type: 'file',children: {}
},{
name: 'dir1',children:
{
name: 'file1.1',children: {},}
},name: 'dir2',children: {}
}
首次通话: var object = new Object(); fun(rootdir,object);
希望这是有道理的。 谢谢!