javascript - 如何正确操作并返回带有节点的文件数组?
问题描述
给定一个包含降价文件的目录,即
myDir
|- fileA.md
|- fileB.md
|- fileC.md
|- fileD.md
我正在尝试通过删除文件扩展名来创建这些文件的数组。
我正在尝试这个:
var mdFiles = fs.readdir('myDir', (err, files) => {
const filesNoExt = []
files.forEach( file => {
filesNoExt.push(file.slice(0, -3)
})
return filesNoExt
});
console.log(mdFiles)
但console.log
命令的结果是undefined
.
如果我像这样修改这个脚本(所以,通过console.log
在函数内部添加一个readdir
):
var mdFiles = fs.readdir('myDir', (err, files) => {
const filesNoExt = []
files.forEach( file => {
filesNoExt.push(file.slice(0, -3)
})
console.log(filesNoExt)
});
console.log(mdFiles)
这是我得到的:
undefined
[
'fileA',
'fileB',
'fileC',
'fileD'
]
第一行undefined
与之前完全一样,但随后还打印了console.log
函数内部的结果,这表明该filesNoExt
数组已正确填充了剥离的文件名。
如何filesNoExt
从函数中正确返回数组mdFiles
,以便我也可以从外部访问其内容?
解决方案
它不起作用的原因是因为readdir
它是一个异步函数,这意味着它与您的其余代码并行运行。如果要阻止执行,请使用readdirSync
:
var mdFiles = fs.readdirSync('myDir');
const filesNoExt = [];
mdFiles.forEach(file => {
filesNoExt.push(file.slice(0, -3)
});
console.log(filesNoExt);
推荐阅读
- sql - 在 SQL Server 中使用插入语句优化必要的 while 循环
- prolog - 使用谓词解决序言中的 kakuro
- firebase - Firestore - 保存查询结果
- c++ - 返回指向结构元素的 char 指针
- php - 如何使用php将pdf转换为文本
- java - 无法在java中使用jython导入python模块
- r - 如何根据另一列中的索引操作一列中的子字符串
- javascript - 尽管有适当的 Access-Control-Allow-* 标头,但 CORS ajax 调用失败
- excel - Excel 2016 散点图 - 如果带有公式的单元格为空白,则 x 轴上的位置错误
- elasticsearch - Logstash Elasticsearch 输出给出 401 错误