2

我正在尝试在 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';
}

有没有更高效的代码方式来做到这一点?

4

5 回答 5

14

使用对象作为地图:

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];

这将为您节省最大数量的重复代码,但如果您还需要做其他事情而不是设置urlaswitch可能更合适。

于 2012-08-07T10:51:47.537 回答
5

切换声明!

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;
于 2012-08-07T10:50:46.287 回答
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];
}
于 2012-08-07T10:52:06.167 回答
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';
}
于 2012-08-07T10:52:39.427 回答
0

您可以使用一个对象来保存不同文本值的 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';
于 2012-08-07T10:58:09.237 回答