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

これにより、繰り返されるコードの最大量を節約できますが、設定以外のことも行う必要がある場合は、を設定urlするswitch方が適切な場合があります。

于 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

オブジェクトを使用してテキストのさまざまな値の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 に答える
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 に答える