下面的完整功能(简化)示例。
假设我列出了可以转换为全名的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>
答案 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 = "";
}