我正在从 freecodecamp和nodeschool 学习nodejs
。我被困了几个小时才找到我的代码的错误,但我仍然无法理解其中的差异。
如果有人解释 我的代码有什么问题 ,那就太棒了。
Learnyounode问题名称 FILETRED LS 。
我的代码
var fs = require('fs'), path = require('path');
var directoryName = process.argv[2];
var extentionName = '.'+process.argv[3];
fs.readdir(directoryName, function(err, data) {
if (err) {
throw err;
}
var newExt = path.extname(data);
for (var i = 0; i < data.length; i++) {
if (newExt.toString() === extentionName.toString()) {
console.log(data[i]);
}
}
});
解决方案代码
var fs = require('fs')
var path = require('path')
var folder = process.argv[2]
var ext = '.' + process.argv[3]
fs.readdir(folder, function (err, files) {
if (err) return console.error(err)
files.forEach(function(file) {
if (path.extname(file) === ext) {
console.log(file)
}
});
});
答案 0 :(得分:0)
您的问题是您正在尝试获取文件列表的扩展名(path.extname
),而应该在for循环中完成。
您的错误:
var newExt = path.extname(data);
解决方案:
for (var i = 0; i < data.length; i++) {
var newExt = path.extname(data[i]);
if (newExt.toString() === extentionName.toString()) {
console.log(data[i]);
}
}
作为旁注,newExt
和extentionName
已经是字符串,因此toString()
是不必要的。