是否有更简单的方法来撰写if(gender == 'm' || gender == 'f')
?
将其写为if(gender == ('m' || 'f'))
是理想的,但这不起作用。在JS或jQuery中编写它的最佳方法是什么?
答案 0 :(得分:7)
最好的方法?按照你拥有的方法,你能做到多么简单?
if(gender == 'm' || gender == 'f')
其他任何事情都会让人难以理解。
为了允许雌雄同体/跨性别者,请使用@kamituel:)
答案 1 :(得分:5)
如前所述,每个人都有自己的方式。我主要在Lua工作,使用这种方法:
allowed = { 'm': true, 'f': true }
if( allowed[gender] )
答案 2 :(得分:2)
如果你真的想要,你可以写:
if ("mf".indexOf(gender) >= 0) { ...
但是,虽然更短,但我认为不是更具可读性。此外,它会打破gender
=== mf
(或者,正如评论中所建议的那样,这可能是你真正想要的东西)。
编辑,您也可以使用:
if(gender === 'm' || gender === 'f')
而不是
if(gender == 'm' || gender == 'f')
请参阅this article原因。
答案 3 :(得分:1)
if (['m','f'].indexOf(gender) >= 0) {
}
答案 4 :(得分:1)
您已经拥有的代码没有任何问题。
但是,安抚你寻求更短的代码和/或不重复变量名两次的代码:
选项1: switch
声明。
switch(gender) {
case 'm' : ....
case 'f' : ....
}
(不要忘记break
陈述)
选项2:数组或字符串映射:
var possibleGenders = ['m','f']; //or just = "mf", and use indexOf on the string, since we're dealing with a single char
if(possibleGenders.indexOf(gender) >=0) { .... }
选项3:正则表达式(ewwww!不要这样做):
if(gender.match(/^[mf]$/)) { .... }
选项4:使用布尔值而不是“m”或“f”:
因此,不是拥有gender
变量,而是设置isMale
变量,设置为true
或false
。这减少了其他地方所需的代码量,例如在if()
语句中。
答案 5 :(得分:1)
if (~"mf".indexOf(gender)) {
// true
}
但是,除非你讨厌你的同事或者想要被人讨厌,否则不要这样做。
答案 6 :(得分:0)
您可以使用:
if(gender in { m:1, f:1 })
Butch注意,如果性别是“构造函数”,它也会返回true。
答案 7 :(得分:0)
至少在普通的javascript中没有。如果您要比较两个以上的值,则可以始终使用数组(javascript中为[v1, v2, ...].indexOf(gender) != -1
或coffeescript中为gender in [v1, v2, v3]
),但我觉得在您的情况下这不值得。
如果您仍然觉得应该存在这样的功能,您可以随时在咖啡脚本项目上发出拉动请求,看看人们对它的看法! : - )
答案 8 :(得分:0)
Fora动态数量的选项你可以这样做:
var genderOpts = ['m','f'] //or more of course
for(var genderOpt in genderOpts)
if(gender == genderOpt)
return true;
return false;
答案 9 :(得分:0)
if(gender == 'm' || gender == 'f')
我认为这很简单。重要的不是编写简单的代码,而是编写简单的代码以便于理解。