简明的方法来比较多个值

Fat*_*ark 38 javascript jquery

考虑以下:

var a = 'jesus';

if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
   alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短它?

Javascript中有什么东西if (a=='bbb'||'ccc')吗?

另外,jQuery可以在这里帮忙吗?

ale*_*lex 50

你可以用这个......

if (["something", "nothing", "anything", "everything"].includes(a)) {
   alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用较旧的浏览器支持...

if (["something", "nothing", "anything", "everything"].indexOf(a) > -1) {
   alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

你还标记了它jQuery,所以如果你需要支持没有旧浏览器Array.prototype.indexOf(),你可以使用$.inArray().


Chr*_*phe 29

正则表达式:

if (/^(something|nothing|anything|everything)$/.exec('jesus')) alert('Who cares?');?
Run Code Online (Sandbox Code Playgroud)

或者相反:

/^(something|nothing|anything|everything)$/.exec('jesus')||alert('Who cares?');?
Run Code Online (Sandbox Code Playgroud)

[更新]更短;-)

if (/^(some|no|any|every)thing$/.exec('jesus')) alert('Who cares?');?
Run Code Online (Sandbox Code Playgroud)

  • 与array.indexOf相反,我的解决方案适用于浏览器BC(Chrome之前) (3认同)
  • 正则表达式慢5倍,请参见测试https://runkit.com/pramendra/58cad911146c1c00147f8d8d (2认同)

Adi*_*dil 17

您可以将选项放在数组中,并使用jQuery $.inArray()或javascrpt indexOf()来搜索数组

纯粹的javascript  

现场演示

var a = 'anything';
arr = ['something', 'nothing', 'anything', 'everything'];
if(arr.indexOf(a) != -1)
    alert("condition met");    
else
    alert("condition not met");    
Run Code Online (Sandbox Code Playgroud)

用jQuery

现场演示

var a = 'jesus';
arr = ['something', 'nothing', 'anything', 'everything'];

if($.inArray(a, arr) != -1) // With jQuery
    alert("condition met");    
else
    alert("condition not met");    
Run Code Online (Sandbox Code Playgroud)


sur*_*h.g 8

试试这个:

如果你想查看耶稣以外的单词,请尝试以下方法,

if(a != "jesus"){
   alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

如果你想检查特定的单词,请尝试以下方式,

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;
}
Run Code Online (Sandbox Code Playgroud)


Mac*_*ski 8

使用ES7,您可以使用Array.prototype.includes甚至比indexOf更短的符号,这已经在每个现代浏览器中实现.

以下是示例用法:

if (['hero', 'anything', 'everything'].includes(me)) {
    alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

而来自Mozilla 的polyfill.

  • 了解.我的观点是关于IE的笑话.我赞成这一点,因为它是现代JS的最佳和最新的答案. (2认同)

归档时间:

查看次数:

18304 次

最近记录:

6 年,9 月 前