我问this question for PHP a long time ago。这同样适用于Node.js,当在循环中使用时,下面的代码似乎有点慢 - 有没有办法在没有插件或React.js等的纯Node.js vanilla JavaScript中编写它?
const dirname = 'cdn-assets/'
fs.readdir(dirname, function(err, files) {
if (err) {
// some sort of error
} else {
if (!files.length) {
// directory appears to be empty
}
}
});
另外,我可以再写一个条件来检查:
if(directory_has_these_files('.js, .css, .jpg, .svg, .mp4'))
答案 0 :(得分:1)
因此,如果您这样做
fs.readdir('/path/to/empty_dir', (data, err) => console.log(data, '.....', err))
您会看到结果是:
空'.....'[]
因此您的代码可以简化为
fs.readdir(dirname, (err, files) => {
if (err && !files) {
console.error(err)
}
console.info('the files --> ', files)
let regexp = RegExp('.jpeg|.doc|.png|.zip', 'gi')
for(result in files) {
if(regexp.test(files[result])) {
console.log('I have the following', files[result])
}
}});
我们想要这种快速,现代化和高效的服务,不是吗?!
所以这更好:
fs.readdir(dirname, (err, files) => {
if (err && !files) {
console.error(err)
}
let regexp = RegExp('.jpeg|.doc|.png|.zip', 'gi');
files.filter(
file => file.match(regexp)
).map(
result => console.log('I have the following',result)
);
});
在目录上使用地图的优点之一是,您可以保证订单的保存,而且看起来也更干净。
Map是内置可迭代的—对象不是,这并不是说Map是Object的替代品,两者都有用例。那是另一个故事。