开发者社区 问答 正文

我需要创建一个JS代码段,该代码段将遍历数组并在下面打印出结果

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) */

展开
收起
被纵养的懒猫 2019-10-08 17:33:04 345 分享 版权
阿里云 AI 助理回答

要实现这样的输出,你可以使用递归函数来遍历这个嵌套的数组对象。下面是一个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函数,它接受一个项目对象和一个表示当前层级缩进的字符串。对于每个项目,它会先打印出项目的名称、类型标记(文件或文件夹)以及大小,然后如果该项目有子项(即它是一个文件夹),则会对每个子项递归调用该函数,同时根据层级调整缩进。最后,通过遍历初始数组并调用此函数,可以得到你想要的输出格式。

请注意,上述代码直接在控制台打印结果,如果你需要将结果以特定格式存储或展示,请适当修改输出逻辑。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答