从目录中获取文件并过滤它们
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)
【讨论】:
以上是关于从目录中获取文件并过滤它们的主要内容,如果未能解决你的问题,请参考以下文章