从目录中获取文件并过滤它们

Posted

技术标签:

【中文标题】从目录中获取文件并过滤它们【英文标题】: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)

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

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于从目录中获取文件并过滤它们的主要内容,如果未能解决你的问题,请参考以下文章

试图从给定目录中过滤掉所有 .p12 和 .pfx 文件

如何从文本文件中获取每一行并平均它们?

获取目录中文件的过滤列表

从静态文件夹获取图像文件并在客户端应用程序中显示它们

哪种设计模式适合从多个来源获取相同类型的数据,将它们组合成一个单元并应用多个过滤器

从本地磁盘获取 .kmz 文件并通过 API 将它们导入 Google 地球