在SQL Server中,我可以说:
WHERE X IN(1,2)
如何在JavaScript中重写以下内容:
if (X==1 || X==2) {}
答案 0 :(得分:80)
使用indexOf
查看x
是否在数组中。
if([1,2].indexOf(x) !== -1)
答案 1 :(得分:11)
if ([1, 2].includes(x)) {
// array has x
}
答案 2 :(得分:8)
尝试使用数组,然后使用.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
答案 3 :(得分:7)
没有银弹。会有一些陷阱。
如果您按照某些答案建议indexOf
,则需要记住所有浏览器都不支持Array.indexOf
,因此您需要提供自己的后备广告。此外,它的性能为O(n)
,因为它需要遍历整个数组,如果你正在处理一个庞大的数组,这可能并不理想。
如果你使用in
运算符作为其他答案的建议,你需要记住,在Javascript对象的属性总是字符串,所以如果你正在检查,不要期望===
检查工作号。
在你建议的这个特定例子中,我只想找到好的if (X==1 || X==2)
。
答案 4 :(得分:2)
if (x in {1:true, 2:true}) { }
或者,如果你想抽象它,你可以这样做http://snook.ca/archives/javascript/testing_for_a_v
功能oc(a) { var o = {}; for(var i = 0; i
仍然......不是最具扩展性的事情
答案 5 :(得分:1)
需要Javascript 1.6
if ((new Array(1, 2)).indexOf(X) != -1) {
}
答案 6 :(得分:1)
我知道PHP中有in_array()函数,但我从未听说过JS中的类似函数。 我想你必须用旧的方式做到这一点:
function contains(a, obj) { var i = a.length; while (i--) { if (a[i] === obj) { return true; } } return false; }
答案 7 :(得分: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']) ) { ... }
答案 8 :(得分:0)
很有趣:
if (X*X+1*2 == (1+2)*X) {}
或自我解释:
if ((X-1)*(X-2) == 0) {}