2012-06-20 3 views
6

Есть сокращенная для следующего -Стенография для множественных или выражений в случае заявление

if(tld == "com" || tld == "net" || tld == "co" || tld == "org" || tld == "info" || tld == "biz") 
{ 
    //do something; 
} 
+2

@Hamish Это говорит JavaScript, Я отредактировал теги соответственно. – purtip31

+2

Взгляните на http://stackoverflow.com/a/10479102/298479 - Я объяснил немало способов сделать то, что вы хотите, а также связал с сравнением производительности в случае, если это имеет значение для вас. – ThiefMaster

+0

@ purtip31 - Thanx. – ShalomSam

ответ

17

вы можете использовать массив

if(["","com","net","co","org","info","biz"].indexOf(tld) > -1) { 
    // do something 
} 

или если вы используете JQuery:

$.inArray(tld, ["com","net","co","org","info","biz"]) 

REF - Performance of OR operation (||) vs inArray()

+4

Вы забыли '! = -1', так как' 0' был бы вполне допустимым результатом ('com'). – ThiefMaster

+0

Осторожно с первым IF-кодом, как пустая строка - '[" ",' - также оценивается как * false *, * undefined * и * null *. Поэтому, если ** tld ** был одним из тех, он первым IF все равно пройдет! Лучше использовать 'if ([" com "," net "," co "," org "," info "," biz "]. IndexOf (tld)> -1)' –

12

Используйте регулярное выражение:

if (/^(com|net|co|org|info|biz)$/i.test(tld)) { 
    // do something 
} 
+1

как это будет обрабатываться, если tld - это «детская кроватка», которая содержит «co»? Хорошо, вы добавили начало и конец, когда я опубликовал. – hackartist

+0

не является регулярным выражением в отношении производительности? – ShalomSam

+0

@ShalomSam Я не знаю, это еще не микро-оптимизация, которую я тестировал. –

0

вы думаете об использовании переключателя заявление? что-то вроде этого:

switch(tld) 
{ 
    case 'com': 
    case 'net': 
    case 'co': 
    ... 
    ... 
    // do something for all of them 
    break; 
    default: 
    // if you want you can have default process here 
    break; 
} 
+0

Я подумал об этом, но в идеале вы бы хотели использовать переключатель, когда у вас разные исполнения в разных случаях. И более того, я ищу сокращение, не делая мой код дольше. Спасибо за ответ, хотя очень ценим! – ShalomSam

Смежные вопросы