简化长Javascript IF

时间:2017-01-15 00:49:54

标签: javascript variables

我在互联网上发现了如何缩小规模:

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])

我想尝试尽可能缩短这个......任何要点?我在互联网上搜索了很多关于这一点但没有发现任何事情......

1 个答案:

答案 0 :(得分:2)

if表达式的一个更简单(但可以说是不太可读)的形式是

if(['b','c','d'].filter(letter => i(letter).style.display === a[1]).length === 3)

filter method为数组中的每个元素执行过滤器测试函数,并创建一个与i(letter).style.display == a[1]条件匹配的新字母数组。由于只有当所有三个字母都通过测试时你才想做某事,if-expression会检查新数组的长度是否为3。

修改:更短的版本(基于Felix Kling的comment

if(['b','c','d'].every(letter => i(letter).style.display === a[1]))