Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 我如何简写这个严格的等式表达式_Javascript_Equality - Fatal编程技术网

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

Javascript 我如何简写这个严格的等式表达式,javascript,equality,Javascript,Equality,有没有办法在不引入新变量的情况下简化if表达式 if ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE')) { return true; } else { return false } 我想应该是这样的: 如果((c2==('RED'| |'GREEN'| |'BLUE'))数组。indexOf进行严格检查,因此您可以 if ( ['RED','GREEN','BLUE'].indexOf(c2) !== -1 ) {... 由于

有没有办法在不引入新变量的情况下简化
if
表达式

if ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE')) {
 return true;
} else {
 return false
}
我想应该是这样的:
如果((c2==('RED'| |'GREEN'| |'BLUE'))
数组。indexOf
进行严格检查,因此您可以

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

由于它已经返回一个布尔值,您可以直接返回它,而不使用条件数组

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

由于它已经返回一个布尔值,您可以直接返回它,而无需条件

,您可以利用比较结果为您提供布尔值这一事实来缩短它,因此您不需要显式返回布尔值:

return ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE'));
您还可以创建一个对象:

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

(您可以在对象中使用
true
,以避免出现
!!

您可以利用比较给出布尔结果的事实来缩短它,因此您不需要显式返回带有布尔值的
返回:

return ((c2 === 'RED') || (c2 === 'GREEN') || (c2 === 'BLUE'));
您还可以创建一个对象:

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

(您可以在对象中使用
true
,以避免使用
!!

不,您的原始操作是使用比较运算符所能做的最好的操作。另一种方法是将值设置为对象中的属性名称,并将
c2
测试为属性名称。不,使用比较运算符可以最好地使用原始值。另一种方法是将值设置为对象中的属性名称,并将
c2
作为属性名称进行测试。Golf'd:
['RED'、'GREEN'、'BLUE']。包括(c2)
Golfed more
new set(['RED'、'GREEN'、'BLUE')。has(c2)
Golf d:
['RED'、'GREEN'、'BLUE']。包括(c2)
Golfed more
new set(['RED'、'GREEN'、'GREEN'、'BLUE'])。has(c2)
这个变量是不必要的:
return!!{RED:1,GREEN:1,BLUE:1}[c2];
但是这很难读。或者
c2在{RED:1,GREEN:1,BLUE:1}
IMO这里使用数组似乎更容易,因为
包含
indexOf
返回布尔值(ish,truthy/falsy on indexOf)这比双重非操作简单。但这并不意味着你没有错,只是不同的方法而已work@SterlingArcher“是的;我有一个根深蒂固的迷信,即对象属性查找比数组搜索快,但对于三个值来说,这绝对不重要,所以两者都可以。”SterlingArcher-这句话给了我额外的分数“并不意味着你没有错”在一条关于使某些操作比double-not操作更简单的注释中(即使这意味着“你错了”)。变量是不必要的:
return!!{RED:1,GREEN:1,BLUE:1}[c2];
但是这变得很难读。或者
c2在{RED:1,GREEN:1,BLUE:1}
IMO在这里使用数组似乎更容易,因为
包括
indexOf
返回布尔值(indexOf上的ish、truthy/falsy)这比双重非操作简单。但这并不意味着你没有错,只是不同的方法而已work@SterlingArcher是的;我有一个根深蒂固的迷信,即对象属性查找比数组搜索快,但对于三个值来说,这绝对不重要,所以两者都可以。@SterlingArcher-这句话的好处是”“这并不意味着你没有错”,在一篇评论中,关于做一些比双重否定操作更简单的事情(即使这意味着“你错了”)。