我有一个非常长的条件语句,如下所示: 如何缩短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;
答案 0 :(得分:0)
使用包含,es6
支持includesvar 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)
您可以将array
与indexOf
或includes
一起使用。
注意: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");