2

重複の可能性:
100 万の IF ステートメントの代替

プログラミング初心者なので知識がほとんどありません。(初心者の質問を投稿して申し訳ありません)

これが私の質問です。

このように国に応じてユーザーをリダイレクトするために「if、else」ステートメントを使用しました。

if (country == 'US') {
  window.location=us
}  
else {
  if (country == 'GR') {  
    window.location=gr
  }
  else {
    // (repeated this for 5 times/5 different countries)
  }
}

さて、ここで、訪問者をそれぞれの州 (つまり、カリフォルニア、アリゾナなど) にリダイレクトする必要があります。

問題は、if/else ステートメントを使用し続けると、これを 50 回繰り返さなければならず、JavaScript コードがばかげてしまうことです。

これを行うためのより良い方法があることを知っています。

複数の if/else ステートメントを配列に置き換える方法を誰かが示すことができますか? このような状況で配列を使用する必要がありますか? 私は正しいですか?

私が間違っている場合は、私を訂正して、代わりに使用する必要がある他のステートメントを示してもらえますか?

ありがとうございます。また、このような初心者の質問をして申し訳ありません。

4

2 に答える 2

8

1 つの可能性は、マップを作成することです。

var countries = {
    US: us,
    GR: gr
};

window.location = countries[country];

これは、文字列を使用してオブジェクトのプロパティを取得できるため機能します。たとえば、foo プロパティを持つオブジェクトがある場合:

var myObject = {};
myObject.foo = 4;

foo次に、次の方法 で取得することもできます。

var foosValue = myObject['foo'];

これは基本的に非常に原始的なハッシュマップであり、プログラミングの一般的なデータ構造です。このパターンは JavaScript では一般的です。

于 2012-10-14T16:19:50.617 に答える
1
var redirect = { "US": "http:this", "GR" : "http:that };

window.location = redirect[country] || alert("what are you trying to achieve?");
于 2012-10-14T16:33:53.533 に答える