【发布时间】:2020-01-31 10:26:30
【问题描述】:
我想让给定目录中的所有目录同步。
<MyFolder>
|- Folder1
|- Folder11
|- Folder12
|- Folder2
|- File1.txt
|- File2.txt
|- Folder3
|- Folder31
|- Folder32
我希望得到一个数组:
["Folder1/Folder11", "Folder1/Folder12", "Folder2", "Folder3/Folder31", "Folder3/Folder32"]
这是我的代码:
const fs = require('fs');
const path = require('path');
function flatten(lists) {
return lists.reduce((a, b) => a.concat(b), []);
}
function getDirectories(srcpath) {
return fs.readdirSync(srcpath)
.map(file => path.join(srcpath, file))
.filter(path => fs.statSync(path).isDirectory());
}
function getDirectoriesRecursive(srcpath) {
return [srcpath, ...flatten(getDirectories(srcpath).map(getDirectoriesRecursive))];
}
有人能帮我解决上面的问题吗?
【问题讨论】:
-
您需要格式化返回数组中的元素,对其进行迭代并对元素进行格式化,并从格式化的元素创建新数组以实现您的结果
-
函数 getDirectoriesRecursive() 似乎工作得相当好......也许你可以详细说明你出了什么问题?当我运行您的代码时,我得到输出: [ '.\\', 'Folder1', 'Folder1\\Folder11', 'Folder1\\Folder12', 'Folder2', 'Folder3', 'Folder3\\Folder31', '文件夹 3\\文件夹 32' ]
标签: javascript node.js recursion directory path