2011-01-22 18 views
3

私はwebSocketからストリームされているjsonデータを比較しようとしています。配列の配列から選択する方法

このようなアレイは、完璧に動作します:

["stream","apple","orange"] 

でもないウェルアレイの配列は:

[["stream","apple","orange"],["stream","pear","kiwi"],["stream","apple","juice"]] 

任意の助けを大幅に高く評価されるだろう。前もって感謝します!あなたが外側から[0]したいインナーアレイ

function handler(jsonString) { 

    var json = jQuery.parseJSON(jsonString); 

    if (json[0] == "blah") { 
     //Do something 
    } 

    else if (json[0] == "blah2") { 
     //Do something else 
    } 

} 

答えて

3

第一の基準は、同じ角括弧表記を使用して、その内部配列[0][1]の項目を参照。

if (json[0][0] == "blah") { 
    //Do something 
} 
else if (json[0][1] == "blah2") { 
    //Do something else 
} 

したがって、次の例では、この生成します:配列内のすべての項目を反復処理するには

json[0][0]; // "stream" 
json[0][1]; // "apple" 

json[1][0]; // "stream" 
json[1][1]; // "pear" 

// etc... 

を、あなたは、ループ内のループを必要とするだろう。外側の配列は外側の配列に格納された配列を反復処理し、内側のループはそれらの内側の配列の値を反復処理します。

このよう

for(var i = 0, len_i = json.length; i < len_i; i++) { 
    for(var j = 0, len_j = json[ i ].length; j < len_j; j++) { 
     // do something with json[ i ][ j ]; (the value in the inner Array) 
    } 
} 

か、jQuery.each()(docs)たい場合:

jQuery.each(json, function(i,val) { 
    jQuery.each(val, function(j,val_j) { 
     // do something with val_j (the value in the inner Array) 
    }); 
}); 

を私もforループを好むだろう。

+0

ありがとうパトリック。それはうまくいった! – DrEval

+0

私は、配列の配列を繰り返し処理する最良の方法を見つけようとしており、それぞれを変数 に結びつけて、ページのデータを置き換えることができます。このタイプの関数に$ .eachを使うべきですか?他 場合(JSON [0] [0] == "ストリーム"){ //のための他の 何かを(VARをI = 0;私は DrEval

+0

@DrEval:ループ内でループを実行する必要があります。はい、 '$ .each'を使うことも、単純なforループを使うこともできます。私はあなたがなぜたくさんの変数を望むのかはわかりませんが。配列格納メカニズムは、複数の変数の必要性を防ぐ*ように設計されています。それはすべての価値のためですか?それとも特定のものだけ?私は1分でループの例を挙げます。 – user113716

関連する問題