Javascript 在Node.js中使用fs.readdir()列出文件时出现问题
我正在努力完成“”研讨会,但练习5遇到了问题。它要求您Javascript 在Node.js中使用fs.readdir()列出文件时出现问题,javascript,node.js,asynchronous,callback,Javascript,Node.js,Asynchronous,Callback,我正在努力完成“”研讨会,但练习5遇到了问题。它要求您创建一个程序,打印给定目录中的文件列表,并按文件扩展名进行过滤。 我传入了目录files,其中包含各种JavaScript、Ruby和纯文本文件。它应该是console.log()每个扩展名为.js的文件 var fs = require('fs'); function indexDirectory(directory) { fs.readdir(directory, function(err, files) { for (va
创建一个程序,打印给定目录中的文件列表,并按文件扩展名进行过滤。
我传入了目录files
,其中包含各种JavaScript、Ruby和纯文本文件。它应该是console.log()
每个扩展名为.js
的文件
var fs = require('fs');
function indexDirectory(directory) {
fs.readdir(directory, function(err, files) {
for (var i in files) {
if (i.indexOf('.js') != -1) {
console.log(files[i]);
}
}
});
}
indexDirectory('files');
当我使用
node program.js
运行当前代码时,它不会输出任何内容。我是否遗漏了一些异步原则?我是否错误地使用回调?任何帮助都将不胜感激:)文件
是数组,您应该使用forEach
而不是for。。在
var fs = require('fs');
function indexDirectory(directory) {
fs.readdir(directory, function(err, files) {
files.forEach(function (file) {
if (file.indexOf('.js') != -1) {
console.log(file);
}
});
});
}
indexDirectory('files');
此代码的另一个问题是,它还将打印扩展名为“.json”的文件。因此,您应该使用正则表达式,而不是indexOf。大概是这样的:
var matches = new RegExp(".js$").test(files[i]);
if (matches) {
console.log(files[i]);
}
A
for in
循环迭代键,而不是值;不要在阵列上使用它files.forEach(函数(i){…})
。另请参见.var i=0,file;ifiles.forEach(函数(文件){})
||files.filter(函数(文件){returnfile_IS_JS;})代码>@minitech谢谢!这是有道理的