Как выбрать из массива массивов - PullRequest
3 голосов
/ 23 января 2011

Я пытаюсь сравнить данные json, поступающие из веб-сокетов.

Такой массив будет работать безупречно:

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

Но массив массивов не так хорош1006 *

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

Любая помощь будет принята с благодарностью.Заранее спасибо!

function handler(jsonString) {

    var json = jQuery.parseJSON(jsonString);

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

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

}

1 Ответ

3 голосов
/ 23 января 2011

Сначала укажите, какой внутренний массив вы хотите [0] из внешнего, затем, используя ту же запись в квадратных скобках, укажите элемент во внутреннем массиве [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() (документы) :

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...