我该如何简写这个严格的平等表达式

时间:2016-10-07 02:03:43

标签: javascript equality

有没有办法在不引入新变量的情况下缩写if表达式?

if ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE')) {
 return true;
} else {
 return false
}

我认为它会是这样的: if ((c2 === ('RED'|| 'GREEN' ||'BLUE')))

2 个答案:

答案 0 :(得分:2)

Array.indexOf会进行严格检查,因此您可以执行

if ( ['RED','GREEN','BLUE'].indexOf(c2) !== -1 ) {...

因为它已经返回一个布尔值,你可以直接返回它而没有条件

答案 1 :(得分:1)

您可以利用比较为您提供布尔结果的事实来缩短它,因此您不需要具有布尔值的显式return

return ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE'));

您也可以创建一个对象:

var targets = { RED: 1, GREEN: 1, BLUE: 1 };
return !!targets[c2]; // !! turns the 1 into true

(您可以在对象中使用true来避免!!。)