2012-04-15 5 views
1

私はここで最善の解決策を探していますが、私はアイデアを持っていますが、それはもっときれいだと思っています。Javascript、複数の配列で数値を確認する

私は単純な天気アプリケーションを作っています。そして私はYahoo Weather APIを使用しています。気象条件のコードを持っていました。

条件に応じて、コードを書いています。さて、50のコードがあり、5つのカテゴリに分類しました。私の場合は元。私のカテゴリーSnowには、Yahooの条件コード15件が含まれています。

さて、あなたはより良いアイデアを得た場合(私がそこにある賭けている)を提案して自由です。

私の考えは、配列のセットから一致する値を返しますが、それを行う方法SHUREないことです。

私のコードは次のようになります。私は必要なもの

function getCondition(code) { 
    var snow = [1, 2, 3], 
     sun = [4, 5, 6]; 
} 

は、コードの照合番号が含まれている変数名ですか?

は私はJS-フィドル あなたの鍵は、あなたの変数名で、自分の価値観は、このようにあなたのコードが何かになり、変数名に対応するコードであるときは、連想配列をしようといけないのはなぜhttp://jsfiddle.net/BH8r6/

答えて

0

を作りましたこのように:

var myCodeArray=[]; 

myCodeArray["snow"]=[1, 2, 3]; 

myCodeArray["sun"] = [4, 5, 6]; 

今、あなたの方法getConditionは

function getCondition(code) 
{ 
    for(var definedCodeName in myCodeArray) 
    { 
     if(myCodeArray.hasOwnProperty(definedCodeName)) 
     {   
     var array=myCodeArray[definedCodeName ]; 
     for(var i=0;i<array.length;i++) 
     { 
      if(array[i]==code){ 
       return definedCodeName ;} 
     } 
     } 
    } 
    return "Not found"; 
} 

なります(お使いのラベルにYahooのコードを変換する)

+0

もちろん!非常に美しい、ありがとう。 –

+0

私の喜びです..これは最善のアプローチだと示唆していますが、あなたはアイデアを持っていたので、私はあなたに同じアプローチで解決する方法を与えています – Baz1nga

+0

まあ、それはまさに私が探していたものでした。私の意見では、数字は配列に束縛されているので、それを行うにはかなりの方法です。読みやすく、構成やメンテナンスが簡単です。 –

1

最速検索は配列のキー(彼らは連続している場合)などのコードを使用することです。

var weather = []; 
weather[0] = "no_weather"; 
weather[1] = "snow"; 
weather[2] = "snow"; 
weather[3] = "snow"; 
weather[4] = "sun"; 
weather[5] = "sun"; 
weather[6] = "sun"; 

function getCondition(code) { 
    return weather[code]; 
} 
+0

これはその方法の1つになります。私はすべての番号のためにそれをする前にカテゴリにすべての私の数字を 'バインド'したいですが。 お時間をありがとうございます! –

+0

私はあなたに同意します。しかし、それはあなたが「最善の解決策」を意味するかどうかにかかっています。私は私が一番速いと言いたいですが、@Engineerによって投稿された解決策は、最もきわめて簡単な解決策です。 – frogge

+0

私は同意します。私は多くの数字を扱っていますので、私の場合、@ Baz1ngaのソリューションは私のプロジェクトに最適です。しかし、データが少ない場合、私はあなたとエンジニアのメトードの両方を優先します。 –

0

すべてを複雑にする理由ちょうど'switch'を使用してください:

function getCondition(code) { 
switch(code){ 
    case 1: 
    case 2: 
    case 4: 
    case 6: 
     return "snow"; 
    case 3: 
    case 8: 
    case 9: 
     return "sun"; 
    case 5: 
    case 7: 
    case 10: 
     return "cloudy";   
} 
return "none"; 
} 
+0

それも私の最初の考えでした。しかし、私は配列に数値を束縛するという考えが好きです。そして、それは非常に多くのケースを扱う際にいくつかのモックアップを保存します。 - 御時間ありがとうございます! –

+0

@ChristianWerther、私は何とかあなたを助けることができてうれしいです。 – Engineer

関連する問題