2016-08-02 2 views
3

Я пытаюсь выяснить правильный синтаксис, как написать, если заявление, проверяет, является ли x == (at least one of many vars)если оператор ==, по крайней мере один из нескольких вариантов

У меня есть пример того, что то, что я пытаюсь добраться. ..

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 (путь.extname (file2))> -1' работает. Как и 'path.extname (file2) .match (/ \. (? Txt | html) $ /)' ... –

+0

Проверьте [this] (http://stackoverflow.com/questions/25171143/how-do -i-use-the-includes-method-in-lodash-to-check-if-an-object-is-in-the-col) он использует модуль 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'); 
} 
Смежные вопросы