Javascript 缩短长if/else语句的最简单方法是什么?

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

完整功能(简化)示例如下

假设我有一个10个可能的缩写的列表,可以转换为全名。
它不够大,我不想在数据库中查找。
如果是,最简单的解决方案是什么

这是我想象的解决方案:从逻辑上讲,比较两个数组是有意义的,例如:
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语句的好方法,感谢您分享此解决方案。