我的index.js文件中有以下代码,用于表达/节点应用程序
// BACKGROUNDS
fs.readdir('public/img/backgrounds/',function(err,files){
if(err) throw err;
files.forEach(function(file){
myBGfiles.push(file);
});
});
它会提取该文件夹中的所有文件,包括gitignore和ds_store。这样做有没有办法忽略这些文件?
我尝试使用if语句来排除它们,但我不确定这是否是实现此目的的最佳方法,也不确定所需的语法。
非常感谢任何帮助。
答案 0 :(得分:1)
您必须使用if语句。
function download() {
var dt = canvas.toDataURL('image/png');
this.href = dt;
};
方法无法在迭代中See the docs停止。
因此,您需要使用if语句忽略要忽略的文件,或者需要使用其他类型的循环,您也可以white
使用if语句。差异非常大(注意检查array.forEach();
和continue
的区别:
请注意,我冒昧地做了一些代码格式化。
使用isBackgroundFile
:
isNonBackgroundFile
或使用ECMAscript 6 array.forEach();
fs.readdir('public/img/backgrounds/', function(err, files) {
if(err) {
throw err;
}
files.forEach(function(file) {
if (isBackgroundFile(file)) {
myBGfiles.push(file);
}
});
});
如果您的Node版本不支持ECMAscript 6,您可以使用for .. of ..
fs.readdir('public/img/backgrounds/', function(err, files) {
if(err) {
throw err;
}
for (let file of files) {
if (isNonBackgroundFile(file)) {
continue;
}
myBGfiles.push(file);
}
});
对于for .. in ..
和isNonBackgroundFile`,您可以这样做:
fs.readdir('public/img/backgrounds/', function(err, files) {
if(err) {
throw err;
}
for (var file in files) {
if (files.hasOwnProperty(file)) {
if (isNonBackgroundFile(file)) {
continue;
}
myBGfiles.push(file);
}
}
});
如果您想知道是否可以向isBackgroundFile
添加选项以仅返回具有特定扩展名的文件,则这是不可能的。
有一个能够做到这一点的图书馆,glob但是我会说if语句替代方案能够完全满足你的需求。