javascript - 无法从目录中递归获取所有文本文件名

标签 javascript node.js recursion

我正在尝试以递归方式从目录中获取所有文本文件(即搜索所有子文件夹):

let fs = require("fs");

function getPathNames(dirName) {
    let pathNames = [];
    for (let fileName of fs.readdirSync(dirName)) {
        let pathName = dirName + "/" + fileName;
        if (fs.statSync(pathName).isDirectory())
            pathNames.concat(getPathNames(pathName));
        else if (pathName.endsWith(".txt"))
            pathNames.push(pathName);
    }
    return pathNames;
}

但是,当我调用 getPathNames(".") 时,我只得到第一个文件的名称。

如果我从函数中取出返回值并更新全局变量,效果很好:

let fs = require("fs");

let pathNames = [];

function getPathNames(dirName) {
    for (let fileName of fs.readdirSync(dirName)) {
        let pathName = dirName + "/" + fileName;
        if (fs.statSync(pathName).isDirectory())
            getPathNames(pathName);
        else if (pathName.endsWith(".txt"))
            pathNames.push(pathName);
    }
}

有人发现第一种方法有什么问题吗?

最佳答案

嗯,concat不是就地突变,而是返回一个新数组,所以我想说你应该这样做

pathNames = pathNames.concat(getPathNames(pathName));

关于javascript - 无法从目录中递归获取所有文本文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54018650/

相关文章:

javascript - 如何将元素锚定到窗口的左侧

node.js - Visual Studio 2015 Update 2 中的 NPM 错误,无法还原包

html - NodeJS 从 HTML 表单传递参数

Java递归函数将列表转换为这种数据结构

javascript - 在函数中使用 Toggle 类

javascript - highchart堆积柱每个类别的总数据

javascript - 将 json 转换为 osc 地址和参数

recursion - 将递归 makefile 变量导出到子 make

c# - 如何加 express 归搜索功能?

php - 字符串替换连续三个字符