请考虑以下事项:
var a = 'jesus';
if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
alert('Who cares?');
}
有没有办法缩短它?
Javascript中是否包含if (a=='bbb'||'ccc')
?
另外,jQuery可以帮忙吗?
答案 0 :(得分:47)
你可以用这个......
if (["something", "nothing", "anything", "everything"].includes(a)) {
alert('Who cares?');
}
如果您遇到旧的浏览器支持...
if (["something", "nothing", "anything", "everything"].indexOf(a) > -1) {
alert('Who cares?');
}
您还将其标记为jQuery,因此如果您需要支持不使用Array.prototype.indexOf()
的旧浏览器,则可以使用$.inArray()
。
答案 1 :(得分:28)
使用正则表达式:
if (/^(something|nothing|anything|everything)$/.exec('jesus')) alert('Who cares?');
或相反:
/^(something|nothing|anything|everything)$/.exec('jesus')||alert('Who cares?');
[更新]更短; - )
if (/^(some|no|any|every)thing$/.exec('jesus')) alert('Who cares?');
答案 2 :(得分:16)
您可以将选项放在数组中并使用jQuery $.inArray()
或javascrpt indexOf()
来搜索数组
纯javascript
<强> Live Demo 强>
var a = 'anything';
arr = ['something', 'nothing', 'anything', 'everything'];
if(arr.indexOf(a) != -1)
alert("condition met");
else
alert("condition not met");
使用jQuery
<强> Live Demo 强>
var a = 'jesus';
arr = ['something', 'nothing', 'anything', 'everything'];
if($.inArray(a, arr) != -1) // With jQuery
alert("condition met");
else
alert("condition not met");
答案 3 :(得分:8)
试试这个:
如果您想查看耶稣以外的字词, 试试以下,
if(a != "jesus"){
alert('Who cares?');
}
如果你想检查特定的单词, 试试以下,
var check_arrays = ['something','nothing', 'anything', 'everything'];
if(checkThis(a)){
alert('Who cares?');
}
function checkThis(a)
{
for(i=0;i<check_arrays.length;i++)
{
if(check_arrays[i] == a)
return true;
}
return false;
}
答案 4 :(得分:7)
使用ES7,您可以使用Array.prototype.includes甚至比indexOf更短的符号,这已经在每个现代浏览器中实现。
以下是示例用法:
if (['hero', 'anything', 'everything'].includes(me)) {
alert('Who cares?');
}
来自Mozilla的polyfill。
答案 5 :(得分:4)
可能使用开关而不是if:
var a = 'jesus';
switch (a){
case 'something':
case 'nothing' :
case 'anything':
case 'everything':
alert('Who cares?');
break;
}
答案 6 :(得分:1)
使用对象文字:
var all={something:1,nothing:1,anything:1,everything:1};
if (all.hasOwnProperty('jesus')) alert('Who cares?');
我认为这是一般用途的最简洁的跨浏览器表达式(好吧,只要目标是比较字符串)。它也非常灵活,因为您可以轻松添加或删除属性:
all.mything=1;
delete all.nothing;
答案 7 :(得分:0)
我认为没有简单的方法可以做到这一点。但是你可以编写一个函数in_array
,你可以在任何需要的地方使用它
Array.prototype.in_array = function(p_val) {
for(var i = 0, l = this.length; i < l; i++) {
if(this[i] == p_val) {
return true;
}
}
return false;
}
var v_array = [ 'something','nothing', 'anything', 'everything'];
var a = "jesus";
if(v_array.in_array(a)){
alert('Who cares?');
}