不明白我的代码,FreeCodeCamp(NodeJS)有什么问题

时间:2017-12-11 18:02:31

标签: javascript node.js

我正在从 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)
        }
    });
});

1 个答案:

答案 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]);
    }
}

作为旁注,newExtextentionName已经是字符串,因此toString()是不必要的。