与多个值进行比较的简洁方法

IT技术 javascript jquery
2021-01-18 10:43:01

考虑以下:

var a = 'jesus';

if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
   alert('Who cares?');
}

有没有办法缩短这个时间?

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

另外,jQuery 能帮上忙吗?

6个回答

你可以用这个...

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().

使用正则表达式:

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?');​
与 array.indexOf 相反,我的解决方案适用于浏览器 BC(Chrome 之前)
2021-03-12 10:43:01
正则表达式慢 5 倍,请参阅测试runkit.com/pramendra/58cad911146c1c00147f8d8d
2021-03-13 10:43:01
使用test()而不是exec()为了更快的执行。test将只返回真或假,exec返回结果数组。
2021-03-27 10:43:01

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

纯javascript  

现场演示

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

使用 jQuery

现场演示

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

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

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

这是示例用法:

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

还有来自 Mozillapolyfill

IE已经4岁了。就像我说的,有一个 polyfill,你甚至可以使用 Babel 为一些旧平台创建构建。
2021-04-05 10:43:01
明白了。我的观点是一个关于 IE 的笑话。我赞成这个,因为它是现代 JS 最好和最新的答案。
2021-04-05 10:43:01
只要您不认为 IE 是现代浏览器,您就可以使用它:Array.prototype.includes() 浏览器兼容性
2021-04-08 10:43:01

试试这个:

如果您想检查耶稣以外的词,请尝试以下,

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;
}