从javascript的路径列表中获取目录路径中文件(和目录)的高效方式

时间:2019-08-17 17:59:36

标签: javascript file directory path

我想从路径列表中获取目录中的所有文件和目录

例如,我有一组路径:

[
    folder1/folder2/file1.txt,
    folder1/folder2/folder3/file1.txt,
    folder1/folder2/file2.txt
]

现在,我想要一种方法来获取目录中的所有文件和目录,例如“ folder1 / folder2”,并希望获得具有以下对象的数组:

[
    {
        "name": "file1.txt",
        "isDirectory": false
    }
    {
        "name": "folder3",
        "isDirectory": true
    }
    {
        "name": "file2.txt",
        "isDirectory": false
    }
]

这是我的代码:

var paths = [
    "folder1/folder2/file.txt",
    "folder1/folder2/folder3/file2.txt",
    "folder1/folder2/file2.txt",
    "folder1/folder3/file3.txt",
]

function getFilesInDir(path) {
    var files = [];
    var pathLength = path.split("/").length;
    paths.forEach(pth => {
        var pthSplit = pth.split("/");
        var length = pthSplit.length;
        if(pth.startsWith(path)) {
            for(var i = 0; i < length; i++) {
                var element = pthSplit.pop();
                if(pthSplit.join("/") == path) {
                    var isDirectory = (i != 0);
                    var file = {
                        name: element,
                       isDirectory
                    };
                    if(files.filter(fl => {
                        return JSON.stringify(fl) == JSON.stringify(file);
                    }).length == 0) files.push(file);
                }
            }
        }
    });
    return(files);
}

console.log(getFilesInDir("folder1/folder2"));

它可以工作,但在我的用例中,路径数组长600000个元素,而我的函数大约需要70秒。

0 个答案:

没有答案