Ada*_*ton 45 javascript comparison
是否有更简单的方法来确定变量是否等于一系列值,例如:
if x === 5 || 6
Run Code Online (Sandbox Code Playgroud)
而不是像以下那样钝的东西:
if x === 5 || x === 6
Run Code Online (Sandbox Code Playgroud)
?
Yos*_*shi 71
您可以将数值存储在数组中,并使用以下命令检查数组中是否存在该变量[].indexOf:
if([5, 6].indexOf(x) > -1) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果-1返回,则该变量在数组中不存在.
zzz*_*Bov 24
取决于你正在进行什么样的测试.如果你有静态字符串,这很容易通过正则表达式检查:
if (/^[56ab]$/.test(item)) {
//-or-
if (/^(foo|bar|baz|fizz|buzz)$/.test(item)) {
doStuff();
} else {
doOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)
如果你有一小组值(字符串或数字),你可以使用switch:
switch (item) {
case 1:
case 2:
case 3:
doStuff();
break;
default:
doOtherStuff();
break;
}
Run Code Online (Sandbox Code Playgroud)
如果你有一长串的值,你应该使用一个数组~arr.indexOf(item),或者arr.contains(item):
vals = [1,3,18,3902,...];
if (~vals.indexOf(item)) {
doStuff();
} else {
doOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)
不幸的Array.prototype.indexOf是,在某些浏览器中不支持.幸运的是,可以使用polyfill.如果你遇到了填充的麻烦Array.prototype.indexOf,你也可以补充一下Array.prototype.contains.
根据您关联数据的方式,您可以将对象中的动态字符串列表存储为其他相关信息的映射:
var map = {
foo: bar,
fizz: buzz
}
if (item in map) {
//-or-
if (map.hasOwnProperty(item)) {
doStuff(map[item]);
} else {
doOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)
in将检查整个原型链,而Object.prototype.hasOwnProperty只检查对象,所以要注意它们是不同的.
Joã*_*lva 16
这很好.如果您有更长的值列表,也许您可以使用以下代码:
if ([5,6,7,8].indexOf(x) > -1) {
}
Run Code Online (Sandbox Code Playgroud)
是.您可以使用自己的功能.此示例使用.some:
var foo = [ 5, 6 ].some(function(val) {
return val === x;
});
foo; // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33659 次 |
| 最近记录: |