Zhe*_*hen 2 javascript if-statement coffeescript
我目前正在使用以下代码进行比较,但正如您所看到的,我正在制作吨if if语句.有没有办法简化代码并使其更有效?
getGenderRef: (grammer=nil) ->
@gender_ref = ""
gender = this.get('gender')
if gender? and gender == 'male'
if grammer == 'he'
@gender_ref = 'he'
else if grammer == 'his'
@gender_ref == 'his'
else if grammer == 'him'
@gender_ref == 'him'
else if gender? and gender == 'female'
if grammer == 'he'
@gender_ref = 'she'
else if grammer == 'his'
@gender_ref == 'her'
else if grammer == 'him'
@gender_ref == 'her'
else if gender? or gender == null
if grammer == 'he'
@gender_ref = 'he/she'
else if grammer == 'his'
@gender_ref == 'his/her'
else if grammer == 'him'
@gender_ref == 'him/her'
Run Code Online (Sandbox Code Playgroud)
你可以使用地图
var rules = {
'female': {
'he': 'she',
'his': 'her',
// ...
},
'male': {
'he': 'he',
// ...
},
'default': {
'he': 'he/she'
// ...
}
};
this.gender_ref = rules[gender ? gender : 'default'][grammer];
Run Code Online (Sandbox Code Playgroud)
它是可扩展的,也可以从另一个后端(例如DB)动态生成.
编辑(由Linus G Thiel撰写)与coffeescript相同:
rules =
female:
he: 'she'
his: 'her'
// ...
male:
he: 'he'
// ...
default:
he: 'he/she'
// ...
@gender_ref = rules[gender or 'default'][grammer]
Run Code Online (Sandbox Code Playgroud)