从目录中获取文件并进行过滤

问题描述 投票:0回答:1

我想从一个目录中获取所有文件,过滤后将结果显示为一个数组......我试了一堆东西,但似乎都没有工作,因为我需要它们,所以我在这里问,下面是我的代码。

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)

我试过promises,但我对它们没有经验,所以我在这里问。如果你能帮助我,那就太好了

javascript arrays node.js filtering fs
1个回答
0
投票

使用filter、map和slice函数。

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正如评论中所建议的


0
投票

使用javascript过滤功能。

var myfiles = ["file1.json", "file2.txt", "file3.jpeg"]
myfiles = myfiles.filter(o=> o.indexOf(".json") !== -1)
console.log(myfiles)
© www.soinside.com 2019 - 2024. All rights reserved.