什么是最简单的写作方式:if(gender =='m'|| gender =='f')?

时间:2013-09-03 13:20:31

标签: javascript

是否有更简单的方法来撰写if(gender == 'm' || gender == 'f')

将其写为if(gender == ('m' || 'f'))是理想的,但这不起作用。在JS或jQuery中编写它的最佳方法是什么?

10 个答案:

答案 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变量,设置为truefalse。这减少了其他地方所需的代码量,例如在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')

我认为这很简单。重要的不是编写简单的代码,而是编写简单的代码以便于理解。