【发布时间】:2017-04-25 14:21:26
【问题描述】:
我正在尝试编写一个节点程序,该程序将读取文件目录并过滤掉没有特定文件扩展名的文件。 (这对learnyounode 来说是一个挑战)由于某种原因,它添加到了“未定义”列表中。谁能告诉我为什么?
var fs = require('fs')
var path = process.argv[2];
var ext = process.argv[3];
var fileList = fs.readdir(path, function callback(err, list){
if (err){
throw err;
}
var filteredList = list.filter(function(fileName){
var extRx = new RegExp('\.' + 'md' + '$');
return extRx.test(fileName);
});
console.log(filteredList.forEach(function(val){console.log(val)}));
});
输出:
ACTUAL EXPECTED
"CHANGELOG.md" == "CHANGELOG.md"
"LICENCE.md" == "LICENCE.md"
"README.md" == "README.md"
"undefined" != ""
"" !=
【问题讨论】:
-
需要查看文件名的实际列表才能进行调试。
-
登录
list并向我们展示结果 -
旁注:为什么
console.log(filteredList.forEach(function(val){console.log(val)}));而不仅仅是console.log(filteredList)? -
@adeneo 没关系,它应该过滤掉那些,因为它们从不匹配正则表达式。字符串“未定义”也不应该匹配,因此日志记录中一定有问题
-
@Randy - 你是对的,过滤后的列表绝对不可能包含
undefined,所以它是外部控制台日志。
标签: javascript node.js filter undefined