Сокращенный код для этого оператора JavaScript "if" - PullRequest
7 голосов
/ 31 января 2011

Есть ли короткий способ написать следующее, используя JavaScript или jQuery?

if (this.id==="a" || this.id==="b" || this.id==="c" || this.id==="d")

Ответы [ 5 ]

6 голосов
/ 31 января 2011

Как насчет этого?

if ( this.id in { "a":1, "b":1, "c":1, "d":1 } ) {
  ...
}

... или это?

if("abcd".indexOf(this.id) > -1) {
   ...
}

5 голосов
/ 31 января 2011
if ( ['a','b','c','d'].indexOf( this.id ) >= 0 ) { ... }

или

if ( this.id in {'a':0,'b':0,'c':0,'d':0} ) { ... }
2 голосов
/ 31 января 2011

Одна возможность - оператор переключения.

switch(this.id){case"a":case"b":case"c":case"d":
    //do something
}
1 голос
/ 31 января 2011

Вы можете попробовать следующий код.Особенно, если у вас более четырех тестовых значений.

if (/^[abcdef]$/.test(this.id)) {
    ...
}
0 голосов
/ 07 апреля 2011

Производительность встроенного анонимного хеша (d in o) была неверно представлена ​​в тестах, как изначально написано , поскольку хэш не был встроенным в тесте.

Как ни странно, истинное значениевстроенный случай хэша, по сравнению с предопределенным случаем хэша, намного медленнее в Firefox 4, но 50% быстрее в Chrome 12.

Но более важным моментом являетсячто d in o пропускает точку хэша - что вам не нужно повторять, чтобы найти что-то.

Две строки, но все еще довольно короткие, и , безусловно, самый быстрый :

var o = {a:1,b:1,c:1,d:1};
if(o[this.id]){...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...