2016-08-02 42 views
3

我试图找出如何编写一个if语句来检查,如果x == (at least one of many vars)if语句==

我有什么什么,我试图让一个例子正确的语法的多个选项中的至少一个。 ..

var path = require('path') 
var fs = require('fs') 
var file1 = './frank.txt' 
var file2 = './jasmine.html' 
var file3 = './finnigan.jpg' 

if (fs.statSync(file2).isFile && path.extname(file2) == ['.txt' || '.html']) { 
    console.log('true') 
} else { 
    console.log('failure') 
} 

我知道在后& &语法怪异,但什么是对形势的正确语法?

+1

方法有很多种。第一个是'(path.extname(file2)=='.txt'|| path.extname(file2)=='.html')'但这很明显的原因。 '['.txt','。html']。indexOf(path.extname(file2))> -1'起作用。正如'path.extname(file2).match(/ \。(?: txt | html)$ /)'... –

+0

检查[this](http://stackoverflow.com/questions/25171143/how-do -I-use-the-include-method-in-lodash-check-if-an-object-is-the-colle)它使用lodash模块来促进这种工作 – n0m4d

回答

2

您可以检查是否存在由elment某个索引:

if (fs.statSync(file2).isFile && ['.txt', '.html'].indexOf(path.extname(file2)) > -1) { 
    console.log('true'); 
} 
else { 
    console.log('failure'); 
} 
+0

你的意思是'> -1 '或'> = 0',对吗?因为如果第一个元素匹配,'indexOf'为零。 –

+0

这不会捕捉到第一个元素。你想要'> ='。 – SLaks

+0

@NiettheDarkAbsol你是对的。修复。 –

0

如果我让你正确的,那么你可以在你的情况下使用jQuery inArray功能。

var arr=[ './frank.txt', './frank.html', './frank.jpg', './frank.csv' ] ; 

if($.inArray('file.exe',arr)!=-1) 
{ 
    console.log('true'); 
} 
else 
{ 
    console.log('false'); 
} 
2

您还可以使用正则表达式这样

var path = require('path'); 
var fs = require('fs'); 
var file1 = './frank.txt'; 
var file2 = './jasmine.html'; 
var file3 = './finnigan.jpg'; 
var extRegex = new RegExp(/^(\.txt|\.html)$/); 

if (fs.statSync(file2).isFile && extRegex.test(path.extname(file2))) { 
    console.log('true'); 
} else { 
    console.log('failure'); 
}