是否可以将许多if / else语句转换为字典以提高空间效率?

时间:2014-09-04 06:34:26

标签: javascript

在Javascript中是否可以将许多if / else语句转换为字典以实现空间效率?

例如,我有以下实际上更长的

if (namelen < 20) {
form.innerHTML = 'hurray!';
}
else if (namelen > 20 && lastname < 90) {
form.innerHTML = 'too long';
}
else if (namelen > 90 && lastname < 120) {
form.innerHTML = 'go away you cheater';
}
...

有没有办法将其纳入字典中以提高空间效率?

可能像

var diction = {namelen < 20: 'hurray', namelen > 20: 'too long', lastname < 90: 'too long', namelen > 90: 'go away you cheater', namelen < 120: 'go away you cheater'}

如果不是字典,我怎么能重构那么多呢?请记住,我是JS的新手,可能已经错过了一些重要的功能,并且在你要求我花一天的大部分时间阅读编程书籍和其余的时间编码。

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

var dict = [
    { max: 0 },
    { max: 20,  str: 'hurray!' },
    { max: 90,  str: 'too long' },
    { max: 120, str: 'go away you cheater' }
];
for(var i = 1; i < dict.length; i++){
    if(namelen > dict[i-1].max && lastname < dict[i].max){
        form.innerHTML = dict[i].str;
    }
}

因此,如果namelen大于“之前的max”且姓氏小于max,请设置innerHTML

请注意,我已将i初始化为1,因此for循环将开始查看dict[1]。这样,我可以使用第一个对象使namelen > dict[i-1]工作。