我正在尝试在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';
}
是否有更有效的方法来执行此操作?'
答案 0 :(得分:13)
将对象用作地图:
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
可能更合适。
答案 1 :(得分:6)
切换声明!
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;
答案 2 :(得分:0)
关联数组:
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];
}
答案 3 :(得分:0)
将独特的部分存储在字典中,然后从那里取出:
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';
}
答案 4 :(得分:0)
您可以使用对象来保存不同文本值的网址,然后在为||
分配值时使用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';