Test for value in Javascript Array
本问题已经有最佳答案,请猛点这里访问。
在SQL Server中,我可以说:
1 | WHERE X IN(1,2) |
如何用javascript重写以下内容:
1 | if (X==1 || X==2) {} |
使用
1 | if([1,2].indexOf(x) !== -1) |
使用数组
1 2 3 | if ([1, 2].includes(x)) { // array has x } |
尝试使用数组,然后使用它的
1 2 3 4 5 6 | var myNumbers = [1,2]; var foo = 4; var bar = 1; var exists = (myNumbers.indexOf(bar) > -1); //true var notExists = (myNumbers.indexOf(foo) > -1); //false |
没有银弹。会有一些问题。
如果按照某些答案的建议执行
如果按照其他答案的建议使用
在你建议的这个特别的例子中,我只会选择好的旧的
1 | if (x in {1:true, 2:true}) { } |
或者,如果你想抽象它,你可以这样做:
函数OC(a){VaR={};对于(var i=0;i)
还是…不是要做的最可扩展的事情
函数将数组转换为对象文本
1 2 3 4 5 6 7 8 9 | function oc(a) { var o = {}; for(var i=0;i<a.length;i++) { o[a[i]]=''; } return o; } |
你可以像这样调用函数
1 | if( name in oc(['Tom', 'Harry','Sue']) ) { ... } |
我知道我们在php中有数组()函数,但我从未在js中听说过类似的函数。我觉得你应该用老办法:
1 2 3 4 5 6 7 8 9 | function contains(a, obj) { var i = a.length; while (i--) { if (a[i] === obj) { return true; } } return false; } |
需要javascript 1.6
1 2 | if ((new Array(1, 2)).indexOf(X) != -1) { } |
只是好玩:
1 | if (X*X+1*2 == (1+2)*X) {} |
或者自我解释:
1 | if ((X-1)*(X-2) == 0) {} |