我正在通过“Learn You The Node.js For Much Win!”研讨会,但我在练习时遇到了麻烦5.它要求你Create a program that prints a list of files in a given directory, filtered by the extension of the files.
我传入了目录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
运行时,我的当前代码不会输出任何内容。我错过了一些异步原理吗?我错误地使用了回调吗?任何帮助将不胜感激:)
答案 0 :(得分:3)
files
是数组,您应该使用forEach
代替for .. in
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');
答案 1 :(得分:0)
此代码的另一个问题是,它将使用' .json'来打印文件。延期。因此,您应该使用正则表达式而不是indexOf。像这样:
var matches = new RegExp(".js$").test(files[i]);
if (matches) {
console.log(files[i]);
}