Javascript 为了节省空间,是否可以将许多if/else语句转换为字典?

Javascript 为了节省空间,是否可以将许多if/else语句转换为字典?,javascript,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 < 1

在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'}

如果不是字典,我将如何重构那么多的If-else?请记住,我是JS新手,可能错过了一些重要功能,在你问我之前,我花了一天的大部分时间阅读编程书籍,剩下的时间则是编写代码。

你可以尝试以下方法:

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,而lastname小于max,则设置innerHTML


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

您可以使用switch.@DOCASAREL它仍然很长,我有上百个。我正在寻找一种更紧凑的方法。除此之外,如何使用带有比较运算的开关?@DOCASAREL在这个问题中,您可以清楚地看到开关仅用于检查单个变量,而不是比较运算或exps-heh!没有想过把dicts放到数组中。这是一个聪明的想法Cerburs:-通常,一个对象数组比一个有很多属性的普通对象更容易迭代。它可以工作,我还对内部循环进行了一些优化,以避免性能下降。谢谢你给了我一个基础,让我可以继续发展。干杯