因为我有时需要像
这样的if语句if (variable == 'one' || variable == 'two' || variable == 'three') {
// code
}
我想知道你是否可以写得更短,如:
if (variable == ('one' || 'two' || 'three')) {
// code
}
答案 0 :(得分:5)
或..
if (~['one', 'two', 'three'].indexOf(variable))
任何有很多方法去皮肤的猫
~
按位NOT ...所以-1变为0,0变为-1,1变为-2等等
所以...~indexOf是" truthy"当indexOf为0或更大时,即找到值...
基本上它是我可能不会在其他人阅读的代码中使用的快捷方式,因为超过一半会抓住他们的头脑并且想知道代码做了什么:p
答案 1 :(得分:3)
你可以尝试:
if(variable in {one:1, two:1, three:1})
或:
if(['one', 'two', 'three'].indexOf(variable) > -1)
或在ES6中(现在在最近的浏览器中本地工作):
if(new Set(['one', 'two', 'three']).has(variable))
请注意,解决方案2将与数组的大小成线性比例,因此如果要检查的值超过几个,则不是一个好主意。
答案 2 :(得分:1)
不,这种多重比较没有捷径。如果您尝试它,它将计算表达式('one' || 'two' || 'three')
的值,然后将其与变量进行比较。
您可以将值放在数组中并查找它:
if ([ 'one', 'two', 'three' ].indexOf(variable) != -1) {
// code
}
您可以使用开关:
switch (variable) {
case 'one':
case 'two':
case 'three':
// code
}
您可以在对象属性中查找值(但对象值只是虚拟对象以允许属性存在):
if (varible in { 'one': 1, 'two': 1, 'three': 1 }) {
// code
}