2015-11-03 47 views
1

任何缩短(或更有效)的写入方法。准确地说,每天,每周...都从界面中取出(输入[select])书写开关的更好方法

switch(repeatFrequency) { 
       case "daily": 
        diffDays = 1; 
        break; 
       case "weekly": 
        diffDays = 7; 
        break; 
       case "weekly_2": 
        diffDays = 14; 
        break; 
       case "monthly": 
        diffDays=31;//we assume the worst case 
        break; 
       case "monthly_3": 
        diffDays = 92;//we assume the worst case 
        break; 
} 
+2

的更好的方法是使用哈希(地图)对象:'键=> value' – hindmost

+0

是的,这是(应包括检查有效性)与一种衬垫访问一个简单的对象。 –

回答

1

更好的方法是使用散列(地图)对象。是这样的:

var hash = { 
    'daily': 1, 
    'weekly': 7, 
    'weekly_2': 14, 
    'monthly': 31, 
    'monthly_3': 93, 
}; 
var diffDays = repeatFrequency in hash? hash[repeatFrequency] : default_value; 
+1

实际上,您可以跳过最后一行中的检查 - 如果找不到匹配项,则它将被定义为相同。 – Katana314

+0

感谢您的答案,但操作员'在'为所有浏览器哈希工作? –

+0

@Anthony N.当然,[它](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in)。但是,没有必要做这样的检查。您可以按照Katana314的建议简单地指定'hash'值,除非您想为变量设置默认值。 – hindmost