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

时间:2018-08-05 16:32:05

标签: javascript if-statement

下面的完整功能(简化)示例。

假设我列出了可以转换为全名的10种可能的缩写。
它还不够大,我想在数据库中进行查找。
最简单的if-else解决方案?

这是我想象中的解决方案:从逻辑上讲,比较两个数组是有意义的,例如:
var bar = [foo == sf, foo == ny, foo == la] ? [San Francisco, New York, Los Angeles] : "";

否则,我在下面有一个可行的解决方案。我能做得更好吗?

编辑:理想的解决方案是一行代码。我不想使用switch语句,因为它的写效率不如if / else。

bar = "LA";
sf = "SF";
ny = "NY";
la = "LA";
{
if (bar == sf) {
foo = "San Francisco";
} else if (bar == ny) {
foo = "New York";
} else if (bar == la) {
foo = "Los Angeles";
}
document.getElementById("test").innerHTML = foo;
}
<div id="test">Result</div>

4 个答案:

答案 0 :(得分:7)

这不是使用if语句,但是您可以使用对象轻松实现此目的:

var cities =  {
 "LA": "Los Angeles",
 "SF": "San Francisco",
 "NY": "New York" 
}

var search = "LA";
var foo = cities[search];

document.body.innerHTML = foo;

答案 1 :(得分:1)

考虑使用switch

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;

遗漏大括号可以缩短代码。

一个不错的JavaScript一线代码也可能像这样:

bar = "LA";

foo = {
 "LA": "Los Angles",
 "SF": "San Francisco",
 "NY": "New York" 
}[bar];

document.getElementById("test").innerHTML = foo;

答案 2 :(得分:1)

如果我是您,我将对我的代码结构进行一些更改,并将所有缩写列表都推送到任何modrdn上,并且不使用任何类型的{{1} }或object块。我还将在结果之后串联foo值,并对我的html进行简单修改

if/else

switch
document.getElementById("test").innerHTML += foo;

答案 3 :(得分:0)

只需使用switch case语句,它将更快。像这样

switch (bar) {
   case "SF": foo = "San Fransisco"; break;
   case "NY": foo = "New York"; break;
   case "LA": foo = "Los Angeles"; break;
   default: foo = "";
}