Javascript 缩短长if/else语句的最简单方法是什么?
完整功能(简化)示例如下 假设我有一个10个可能的缩写的列表,可以转换为全名。Javascript 缩短长if/else语句的最简单方法是什么?,javascript,if-statement,Javascript,If Statement,完整功能(简化)示例如下 假设我有一个10个可能的缩写的列表,可以转换为全名。它不够大,我不想在数据库中查找。如果是,最简单的解决方案是什么 这是我想象的解决方案:从逻辑上讲,比较两个数组是有意义的,例如: var bar=[foo==sf,foo==ny,foo==la]?[旧金山、纽约、洛杉矶]:“” 否则,我将在下面提供一个有效的解决方案。我能做得更好吗 编辑:理想的解决方案是一行代码。我不想使用switch语句,因为它的编写效率并不比if/else高多少 bar=“LA”; sf=“s
它不够大,我不想在数据库中查找。
如果是,最简单的解决方案是什么 这是我想象的解决方案:从逻辑上讲,比较两个数组是有意义的,例如:
var bar=[foo==sf,foo==ny,foo==la]?[旧金山、纽约、洛杉矶]:“”代码>
否则,我将在下面提供一个有效的解决方案。我能做得更好吗
编辑:理想的解决方案是一行代码。我不想使用switch语句,因为它的编写效率并不比if/else高多少
bar=“LA”;
sf=“sf”;
ny=“ny”;
la=“la”;
{
如果(bar==sf){
foo=“旧金山”;
}否则如果(bar==ny){
foo=“纽约”;
}否则如果(bar==la){
foo=“洛杉矶”;
}
document.getElementById(“test”).innerHTML=foo;
}
Result
这不是使用if
语句,但您可以使用对象轻松实现这一点:
var城市={
“洛杉矶”:“洛杉矶”,
“旧金山”:“旧金山”,
“纽约”:“纽约”
}
var search=“LA”;
var foo=城市[搜索];
document.body.innerHTML=foo代码>只需使用switch case语句,速度会更快。像这样
switch (bar) {
case "SF": foo = "San Fransisco"; break;
case "NY": foo = "New York"; break;
case "LA": foo = "Los Angeles"; break;
default: foo = "";
}
考虑使用开关
:
bar = "LA";
sf = "SF";
ny = "NY";
la = "LA";
switch (bar) {
case sf:
foo = "San Fransisco";
break;
case ny:
foo = "New York";
break;
case la:
foo = "Los Angeles";
break;
}
document.getElementById("test").innerHTML = foo;
或者,if语句可以如下所示:
bar = "LA";
sf = "SF";
ny = "NY";
la = "LA";
if (bar == sf) foo = "San Fransisco";
else if (bar == ny) foo = "New York";
else if (bar == la) foo = "Los Angeles";
document.getElementById("test").innerHTML = foo;
bar = "LA";
foo = {
"LA": "Los Angles",
"SF": "San Francisco",
"NY": "New York"
}[bar];
document.getElementById("test").innerHTML = foo;
为一行程序省略大括号可以很好地缩短代码
JavaScript的一行代码也可以如下所示:
bar = "LA";
sf = "SF";
ny = "NY";
la = "LA";
if (bar == sf) foo = "San Fransisco";
else if (bar == ny) foo = "New York";
else if (bar == la) foo = "Los Angeles";
document.getElementById("test").innerHTML = foo;
bar = "LA";
foo = {
"LA": "Los Angles",
"SF": "San Francisco",
"NY": "New York"
}[bar];
document.getElementById("test").innerHTML = foo;
如果我是你,我将对代码结构进行一些更改,并将所有缩写列表推送到任何对象
,并且不使用任何类型的IF/else
或开关
块。我还将在结果:之后连接foo值,并对html进行简单修改
document.getElementById(“test”).innerHTML+=foo代码>
var bar=“LA”;
var abbr={
“旧金山”:“旧金山”,
“纽约”:“纽约”,
“洛杉矶”:“洛杉矶”,
}
var foo=缩写[bar];
document.getElementById(“test”).innerHTML+=foo代码>
结果:
您可以使用switch语句。是的,switch会更好。与此相关,我强烈建议您阅读本文:我将使用查找lookup={'f':“foo”,'b':“bar”};name=lookup[f']'
嵌套的三元数呢?:)@乔纳斯。如果有10个缩写,那会变得非常混乱和难以理解。我真的很喜欢你建议的解决方案,尤其是最后一个。那正是我要找的!您将上一个解决方案称为“一行程序”,但是否有一个术语来描述该语法?我想读更多。它到底在干什么?对不起,我是说更多的一种表达,呃。。。哈哈,我指的“一行”是中间的部分,它是一个表达,可以在一行上,但这会使它很难阅读。除了查找之外,我不确定是否还有其他语法名称…?我理解您所指的内容,并且它工作得非常好。如果我不需要打印结果,它实际上是一行。再次感谢。这是避免if语句的好方法,感谢您分享此解决方案。