比使用大量else if语句更有效的方法

Che*_*rub 2 javascript if-statement

我正在尝试在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';
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?'

Jon*_*Jon 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];
Run Code Online (Sandbox Code Playgroud)

这将节省您的重复代码的最高金额,但如果你还需要做其他的东西比设定url一个switch可能更合适.


Aes*_*ete 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;
}
Run Code Online (Sandbox Code Playgroud)

现在不需要一个default子句,因为你url在切换之前已经初始化了.

否则你可以添加这个:

default: url = 'http://www.mydomain.com/noone.html';
break;
Run Code Online (Sandbox Code Playgroud)