Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从目录中递归获取所有文本文件名_Javascript_Node.js_Recursion - Fatal编程技术网

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

Javascript 无法从目录中递归获取所有文本文件名,javascript,node.js,recursion,Javascript,Node.js,Recursion,我试图以递归方式从目录中获取所有文本文件(即搜索所有子文件夹): 但是,当我调用getPathNames(“.”)时,我只得到第一个文件的名称 如果我将返回值从函数中取出,并更新一个全局变量,则效果良好: let fs = require("fs"); let pathNames = []; function getPathNames(dirName) { for (let fileName of fs.readdirSync(dirName)) { let path

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

但是,当我调用
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);
    }
}
有人发现第一个方法有什么错误吗?

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

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

在第一种方法中,在关联结果后,应该将值存储在
路径名中。
pathNames = pathNames.concat(getPathNames(pathName));