Поместите ваши значения в массив и проверьте, находится ли ваш элемент в массиве:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
Если браузер, который вы поддерживаете, не имеет Array#includesметода, вы можете использовать этот polyfill .
Краткое объяснение ~ярлыка тильды:
Обновить: как у нас теперь есть includesметод, нет смысла использовать ~взломать больше. Просто оставьте это здесь для людей, которые заинтересованы в знании того, как это работает и / или столкнулись с этим в чужом коде.
Вместо проверки, если результат indexOf есть >= 0, есть хороший маленький ярлык:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
Вот скрипка: http://jsfiddle.net/HYJvK/
Как это работает? Если элемент найден в массиве, indexOfвозвращает его индекс. Если предмет не был найден, он вернется -1. Не вдаваясь в подробности, ~это побитовый оператор НЕ , который вернет0 только для -1.
Мне нравится использовать ~ярлык, поскольку он более лаконичен, чем сравнение возвращаемого значения. Хотелось бы, чтобы в JavaScript была in_arrayфункция, которая возвращала бы логическое значение напрямую (аналогично PHP), но это просто желаемое за действительное ( Обновление: теперь это происходит. Это называется includes. Смотрите выше) Обратите внимание, что jQuery inArray, разделяя сигнатуру метода PHP, фактически имитирует нативную indexOfфункциональность (которая полезна в разных случаях, если индекс - это то, что вам действительно нужно).
Важное примечание: использование ярлыка тильды, похоже, обернулось спорами, как некоторые яростно полагают, что код недостаточно ясен и его следует избегать любой ценой (см. Комментарии к этому ответу). Если вы разделяете их мнение, вы должны придерживаться .indexOf(...) >= 0решения.
Немного более длинное объяснение:
Целые числа в JavaScript подписаны, что означает, что самый левый бит зарезервирован как бит знака; флаг, чтобы указать, является ли число положительным или отрицательным, с1 отрицательным.
Вот некоторые примеры положительных чисел в 32-битном двоичном формате:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
Теперь вот те самые цифры, но отрицательные:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
Почему такие странные комбинации для отрицательных чисел? Просто. Отрицательное число - это просто инверсия положительного числа + 1; добавление отрицательного числа к положительному числу должно всегда давать0 .
Чтобы понять это, давайте сделаем простую двоичную арифметику.
Вот как мы могли бы добавить -1к +1:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
А вот как мы могли бы добавить -15к +15:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
Как мы получаем эти результаты? Выполняя регулярное сложение, как нас учили в школе: вы начинаете с самого правого столбца и складываете все строки. Если сумма больше наибольшего однозначного числа (которое в десятичном виде 9, но в двоичном1 ), мы переносим остаток в следующий столбец.
Теперь, как вы заметите, при добавлении отрицательного числа к его положительному номеру, самый правый столбец, который не является всем 0s, всегда будет иметь два 1s, которые при сложении вместе приведут к 2. Двоичное представление двух существ 10, мы переносим в 1следующий столбец и помещаем 0результат в первый столбец. Все остальные столбцы слева имеют только одну строку с символом «a» 1, поэтому перенос 1из предыдущего столбца будет снова складываться 2, что затем будет перенесено ... Этот процесс повторяется до тех пор, пока мы не доберемся до самого левого столбца, где « 1Переносить» некуда, поэтому он переполняется и теряется, и мы остаемся со 0всеми.
Эта система называется дополнением 2 . Вы можете прочитать больше об этом здесь:
Представление дополнения 2 для подписанных целых чисел .
Теперь, когда ускоренный курс в дополнении 2 закончен, вы заметите, что -1это единственное число, двоичное представление которого1 повсюду.
Используя ~побитовый оператор NOT, все биты в данном номере инвертируются. Единственный способ 0вернуться от инвертирования всех битов, если мы начали с1 все сначала.
Итак, все это было многословным способом сказать, что ~nвернется, только 0если nесть -1.
in?