В SQL Server я мог бы сказать:
WHERE X IN(1,2)
Как вы могли бы переписать следующее в JavaScript:
if (X==1 || X==2) {}
В SQL Server я мог бы сказать:
WHERE X IN(1,2)
Как вы могли бы переписать следующее в JavaScript:
if (X==1 || X==2) {}
Используйте indexOf
, чтобы узнать, находится ли x
в массиве.
if([1,2].indexOf(x) !== -1)
Попробуйте использовать массив, а затем его .indexOf()
.
var myNumbers = [1,2];
var foo = 4;
var bar = 1;
var exists = (myNumbers.indexOf(bar) > -1); //true
var notExists = (myNumbers.indexOf(foo) > -1); //false
Нет серебряной пули. Будет несколько исправлений.
Если вы сделаете indexOf
, как предлагают некоторые ответы, вам нужно помнить, что Array.indexOf
не поддерживается во всех браузерах, поэтому вам нужно предоставить свой собственный резерв. Кроме того, это будет иметь производительность O(n)
, так как ему нужно пройти весь массив, что может быть не идеальным, если вы имеете дело с огромным массивом.
Если вы используете оператор in
, как предлагают другие ответы, вам нужно помнить, что в свойствах объекта Javascript всегда есть строки, поэтому не ожидайте, что проверка ===
будет работать, если вы проверяете числа.
В этом конкретном примере, который вы предположили, я бы просто пошел на старый добрый if (X==1 || X==2)
.
Оператор javascript
if (foo == a || foo == b) {
//
}
может быть записано как
if (foo in {a:true, b:true}) {
//
}
if (x in {1:true, 2:true}) { }
Или, если вы хотите отвлечь его, вы можете сделать это следующим образом http://snook.ca/archives/javascript/testing_for_a_v
функция oc (a) { var o = {}; для (var я = 0; i
Тем не менее... не самая масштабируемая вещь, которую нужно делать
Я знаю, что у нас есть функция in_array() в PHP, но я никогда не слышал о подобной функции в JS. Я думаю, вы должны сделать это по-старому:
function contains(a, obj) { var i = a.length; while (i--) { if (a[i] === obj) { return true; } } return false; }
Использование Array .includes
method.
if ([1, 2].includes(x)) {
// array has x
}
Требуется Javascript 1.6
if ((new Array(1, 2)).indexOf(X) != -1) {
}
Функция преобразования массива в литерал объекта
function oc(a)
{
var o = {};
for(var i=0;i<a.length;i++)
{
o[a[i]]='';
}
return o;
}
Вы можете вызвать функцию, например
if( name in oc(['Tom', 'Harry','Sue']) ) { ... }
Просто весело:
if (X*X+1*2 == (1+2)*X) {}
или самоочевидность:
if ((X-1)*(X-2) == 0) {}