在Javascript数组中测试值

Phi*_*enn 59 javascript

在SQL Server中,我可以说:

WHERE X IN(1,2)
Run Code Online (Sandbox Code Playgroud)

您将如何在JavaScript中重写以下内容:

if (X==1 || X==2) {}
Run Code Online (Sandbox Code Playgroud)

Pet*_*son 84

使用indexOf,看是否x是在数组中.

if([1,2].indexOf(x) !== -1)
Run Code Online (Sandbox Code Playgroud)


vit*_*kon 15

使用Array .includes方法.

if ([1, 2].includes(x)) {
  // array has x
}
Run Code Online (Sandbox Code Playgroud)

  • Stack Overflow上的一个好习惯是添加解释为什么您的解决方案应该工作.有关更多信息,请参阅[如何应答](http://stackoverflow.com/help/how-to-answer). (5认同)

p.c*_*ell 9

尝试使用数组,然后使用它.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
Run Code Online (Sandbox Code Playgroud)

  • IE7及以下版本显然不支持它...这里有更多信息和后备下降http://soledadpenades.com/2007/05/17/arrayindexof-in-internet-explorer/ (3认同)

ada*_*Lev 7

没有银弹.会有一些陷阱.

如果你做indexOf了一些答案建议,你需要记住Array.indexOf所有浏览器都不支持,所以你需要提供自己的后备.此外,它还具有性能,O(n)因为它需要遍历整个数组,如果你正在处理一个庞大的数组,这可能并不理想.

如果你使用in运算符作为其他答案建议,你需要记住,在Javascript对象的属性总是字符串,所以===如果你正在检查数字,不要指望检查工作.

在你建议的这个特殊例子中,我只是为了好老if (X==1 || X==2).