【问题标题】:Getting files from directory and filtering them从目录中获取文件并过滤它们
【发布时间】:2020-09-02 13:05:57
【问题描述】:

我试图从一个目录中获取所有文件,过滤它们并将结果显示为一个数组.. 我已经尝试了很多东西,但似乎都不起作用,因为我需要他们在这里问这么糟糕,下面是我的代码。

const fs = require('fs');
let files = fs.readdirSync('./commands/fonts')

files.forEach(el => {
   el.includes('.json') ? files[files.indexOf(el)].replace('.json', '') : files.splice(files[files.indexOf(el)], 1)
});

console.log(files)

我尝试过承诺,但我对它们缺乏经验,所以我在这里问。如果你能帮忙就太好了!

【问题讨论】:

    标签: javascript arrays node.js filtering fs


    【解决方案1】:

    使用过滤器、映射和切片函数:

    const files = ["fileone.json", "filetwo.json", "filethree, filefour.md"]
    filteredFiles = files.filter(fileName => fileName.endsWith(".json"))
        .map(fileName => fileName.slice(0, -5))
    console.log(filteredFiles)

    filter() 方法创建一个新数组,其中包含所有通过所提供函数实现的测试的元素

    map() 方法创建一个新数组,其中填充了在调用数组中的每个元素上调用提供的函数的结果

    slice() 方法将数组中的选定元素作为新数组对象返回(在我们的示例中,我们选择了位置 0 到 [final-5] 中的字符)

    编辑:现在使用 endsWith 代替 includes 回答,如 cmets 中所建议的

    【讨论】:

    • 发现如果我使用.endsWith(".json") 可能会更好,以防万一任何其他文件在其名称中包含它,您仍然很棒!
    【解决方案2】:

    使用javascript过滤功能:

    var myfiles = ["file1.json", "file2.txt", "file3.jpeg"]
    myfiles = myfiles.filter(o=> o.indexOf(".json") !== -1)
    console.log(myfiles)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2011-01-14
      相关资源
      最近更新 更多