比使用大量其他 if 语句更有效的方法
More efficient way than using lots of else if statements
我正在尝试在Javascript中找到更好的方法来做到这一点:
if ( text === 'amy' ) {
var url = 'http://www.mydomain.com/amylikescats.html';
}
else if ( text === 'dave' ) {
var url = 'http://www.mydomain.com/daveshome.html';
}
else if ( text === 'steve' ) {
var url = 'http://www.mydomain.com/steve2.html';
}
else if ( text === 'jake' ) {
var url = 'http://www.mydomain.com/jakeeatstofu.html';
}
else {
var url = 'http://www.mydomain.com/noone.html';
}
有没有更代码效率的方法呢?
使用对象作为映射:
var map = {
"amy": 'http://www.mydomain.com/amylikescats.html',
"dave": 'http://www.mydomain.com/daveshome.html',
// etc
};
var text = "whatever";
var url = map[text] === undefined ? 'http://www.mydomain.com/noone.html' : map[text];
这将为您节省最大数量的重复代码,但如果您还需要执行其他操作,而不是设置url
switch
可能更合适。
Switch 语句!
var url = 'http://www.mydomain.com/noone.html';
switch(text) {
case 'amy': url = 'http://www.mydomain.com/amylikescats.html';
break;
case 'dave': url = 'http://www.mydomain.com/daveshome.html';
break;
case 'steve': url = 'http://www.mydomain.com/steve2.html';
break;
case 'jake': url = 'http://www.mydomain.com/jakeeatstofu.html';
break;
}
现在不需要 default
子句,因为您在切换之前已经初始化了url
。
否则,您可以添加以下内容:
default: url = 'http://www.mydomain.com/noone.html';
break;
关联数组:
var data = {
amy: 'http://www.mydomain.com/amylikescats.html',
dave: 'http://www.mydomain.com/daveshome.html',
// etc...
}
要使用:
var url = data[text];
else
情况可以通过数组中不存在的项来复制,因此可以扩展一点:
var url = '';
if(!(text in data)){
url = 'http://www.mydomain.com/daveshome.html';
}
else{
url = data[text];
}
将唯一部分存储在字典中,然后从那里获取:
var map = {
amy: "amylikescats",
dave: "daveshome",
steve: "steve2",
jake: "jakeeatstofu"
};
var url = map[text];
if (!url) {
url = 'http://www.mydomain.com/noone.html';
} else {
url = 'http://www.mydomain.com/' + url + '.html';
}
可以使用对象来保存不同文本值的 URL,然后在将值分配给url
时使用 ||
运算符,以便在必要时使用回退值。
var urlsForText = {
'amy': 'http://www.mydomain.com/amylikescats.html',
'dave': 'http://www.mydomain.com/daveshome.html',
'steve': 'http://www.mydomain.com/steve2.html',
'jake': 'http://www.mydomain.com/jakeeatstofu.html'
};
var url = urlsForText[text] || 'http://www.mydomain.com/noone.html';
相关文章:
- 使用条件语句,使 jquery fadeIn/fadeOut 仅在视口 >= 480px 时才有效
- 为什么我的不正确的 if 语句有效
- 比使用大量其他 if 语句更有效的方法
- 为什么模块级返回语句在 Node.js 中有效
- 如果语句有效,我将如何更改该语句的逻辑
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 按钮上的if-else语句超时有效,但无法返回到原始状态
- Jquery + angularjs If 语句有效,但 href 值不变
- 检查布尔键是否存在并将其包含在 if 语句中的最有效方法
- switch 语句有时才有效
- 为什么我的 if 语句仅在我的输入具有值时才有效
- 为什么这个变量声明语句有效
- 如何设置具有多个条件的if语句,该语句使用有效条件's变量
- 为什么获胜't我的JavaScript计算涉及if语句是否有效
- 我可以'如果语句在Javascript:S中有效,则似乎不会实现这一点
- 有没有一种更有效的方法来做到这一点,而不是所有的“如果”?和“;else"语句
- 使用数百块的if else语句的有效方法
- 这个break语句在jquery/javascript中有效吗?
- 如果语句在调整大小时有效,则未准备好
- 如果语句有效,则KnockoutJS