var arr = [ { name: 'Folder 1', type: 'folder', size: '34kb', children: [ { name: 'Folder 11', type: 'folder', size: '14kb', children: [ { name: 'Folder 111', type: 'folder', size: '14kb', children: [] }, { name: 'Folder 112', type: 'folder', size: '14kb', children: [] }, { name: 'file113.png', type: 'file', size: '2kb' } ] }, { name: 'Folder 12', type: 'folder', size: '14kb', children: [] }, { name: 'Folder 13', type: 'folder', size: '14kb', children: [ { name: 'Folder 131', type: 'folder', size: '14kb', children: [] }, { name: 'Folder 132', type: 'folder', size: '14kb', children: [] }, { name: 'file133.png', type: 'file', size: '2kb' } ] } ] }, { name: 'Folder 2', type: 'folder', size: '34kb', children: [ { name: 'file21.png', type: 'file', size: '2kb' }, { name: 'file22.png', type: 'file', size: '2kb' }, { name: 'file23.png', type: 'file', size: '2kb' }, { name: 'file24.png', type: 'file', size: '2kb' } ] } ] 我需要打印出:
/** Display result:
-Folder 1 (34kb) --Folder 11 (14kb) ---Folder 111 (14kb) ---Folder 112 (14kb) -->file113.png --Folder 12 (14kb) --Folder 13 (14kb) ---Folder 131 (14kb) ---Folder 132 (14kb) -->file133.png (14kb) -folder 2 (34kb) ->file21.png (14kb) ->file22.png (14kb) ->file23.png (14kb) ->file24.png (14kb) */
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要实现这样的输出,你可以使用递归函数来遍历这个嵌套的数组对象。下面是一个JavaScript示例代码,用于生成你所需的格式:
function printFolderStructure(item, indent = "") {
console.log(indent + (item.type === 'folder' ? '-': '->') + item.name + ' (' + item.size + ')');
if (item.children && item.children.length > 0) {
for (const child of item.children) {
printFolderStructure(child, indent + (item.type === 'folder' ? ' ': ' '));
}
}
}
// 使用提供的数组进行打印
arr.forEach(folder => {
printFolderStructure(folder);
});
这段代码定义了一个printFolderStructure
函数,它接受一个项目对象和一个表示当前层级缩进的字符串。对于每个项目,它会先打印出项目的名称、类型标记(文件或文件夹)以及大小,然后如果该项目有子项(即它是一个文件夹),则会对每个子项递归调用该函数,同时根据层级调整缩进。最后,通过遍历初始数组并调用此函数,可以得到你想要的输出格式。
请注意,上述代码直接在控制台打印结果,如果你需要将结果以特定格式存储或展示,请适当修改输出逻辑。