如何缩短Javascript中的条件语句

时间:2016-12-03 04:56:38

标签: javascript

我有一个非常长的条件语句,如下所示: 如何缩短Javascript中的条件语句?



var str = document.getElementsByClassName("label");
for(var i = 0; i<str.length; ++i){
if(str[i].innerHTML === "US" || str[i].innerHTML === "VN"|| str[i].innerHTML === "War"...){
str[i].style.display = "none";}}
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

使用包含,es6

支持includes
var values = ["US","VN","War"];
if (values.includes(str[i].innerHTML)){

}

您可以使用indexOf(..)>-1

执行此操作
var values = ["US","VN","War"];
if (values.indexOf(str[i].innerHTML)>-1){

}

答案 1 :(得分:0)

您可以将arrayindexOfincludes一起使用。

注意:includes适用于ES6支持的浏览器

工作代码

var str = document.getElementsByClassName("label");
var options = ['US', 'VN', 'War'];

for(var i = 0; i<str.length; ++i){
   var text = str[i].innerHTML;
   if(options.indexOf(text) !== -1){
      str[i].style.display = "none";
   }
}
<span class="label">US</span>
<span class="label">USA</span>

答案 2 :(得分:0)

通过正则表达式进行测试非常简短:

if (/^(US|VN|War|etc)$/.test(str[i].innerHTML)) {

在上下文中:

var str = document.getElementsByClassName("label");
var re = /^(US|VN|War|etc)$/;
for (var i = 0; i < str.length; ++i) {
    if (re.test(str[i].innerHTML)) {
        str[i].style.display = "none";
    }
}

如果需要,可以通过在正则表达式中添加i标志来使其不区分大小写:

var re = /^(US|VN|War|etc)$/i;

答案 3 :(得分:0)

这可以通过选择具有类label的所有元素然后通过检查它们的innerHTML在数组['US','VN']内来过滤它们来完成,并且对于满足过滤条件的所有元素,我们更改css风格展示

$(".label").filter(function (){
        return ['US','VN'].includes(this.innerHTML);
   }).css("display","none");