Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简化长Javascript IFs_Javascript_Variables - Fatal编程技术网

简化长Javascript IFs

简化长Javascript IFs,javascript,variables,Javascript,Variables,我在互联网上找到了关于如何使if stament变小的信息: if([1,5,7,22].indexOf(myvar)!=-1) alert('yeah') 由此: if( myvar==1 || myvar==5 || myvar==7 || myvar==22 ) alert('yeah') 有没有一种方法可以做到这一点,即不使用4个myvar,而是使用3个不同的值?我希望原始声明是: if(i('b').style.display == a[1] & i('c').style.

我在互联网上找到了关于如何使if stament变小的信息:

if([1,5,7,22].indexOf(myvar)!=-1) alert('yeah')
由此:

if( myvar==1 || myvar==5 || myvar==7 || myvar==22 ) alert('yeah')
有没有一种方法可以做到这一点,即不使用4个myvar,而是使用3个不同的值?我希望原始声明是:

if(i('b').style.display == a[1] & i('c').style.display == a[1] & i('d').style.display == a[1])
我想尽量缩短这个。。。有什么要点吗?关于这一点,我在互联网上搜索了很多,但没有发现任何东西…

一种更简单(但可以说可读性较差)的if表达式形式是

if(['b','c','d'].filter(letter => i(letter).style.display === a[1]).length === 3)
对数组中的每个元素执行筛选测试函数,并创建与
i(letter).style.display==a[1]
条件匹配的新字母数组。由于您只希望在所有三个字母都通过测试时执行某些操作,因此if表达式将检查新数组的长度是否为3

编辑:较短版本(基于Felix Kling)


短得多,但重复次数少:
['b','c','d'].map(x=>i(x).style.display).every(x=>x==a[1])
if(['b','c','d'].every(letter => i(letter).style.display === a[1]))