你能缩短'if'一个变量可以是多个变量的表述
Can you shorten an 'if' statement where a certain variable could be multiple things
因为我有时需要像
这样的if语句if (variable == 'one' || variable == 'two' || variable == 'three') {
// code
}
我想知道你是否可以把这个写得更短一些,比如:
if (variable == ('one' || 'two' || 'three')) {
// code
}
or…
if (~['one', 'two', 'three'].indexOf(variable))
任何一只猫都有很多剥皮的方法
~
is bitwise NOT…所以-1变成0 0变成-1 1变成-2等等
所以…
当indexOf为0或更大时,~与indexOf为"真",即找到值…基本上是一个快捷方式,我可能不会在代码中使用它,因为超过一半的人会挠头想知道代码是做什么的:p
你可以试试:
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将随着数组的大小线性缩放,因此如果要检查的值多于几个,则不是个好主意。
不,这种多重比较没有捷径。如果您尝试,它将计算表达式('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
}
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 导航到特定事件的另一个变量页面
- 在另一个函数中使用变量this
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 为什么window.open不打开一个以变量形式给出的链接
- 将节点数据分配给另一个变量jstree
- 如何将变量传递到另一个js文件
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 将会话变量从一个页面传递到另一个页面
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 这在JavaScript中是一个好的变量名吗
- 可以't将sessionStorage设置为Javascript中的一个变量
- 如何在javascript中给变量一个随机值
- 在不同的.js文件之间传递变量;一个是在iframe内
- Console.log(变量);VS console.log([变量]);/一个提供信息,另一个没有
- 是否可以给变量一个默认值