for внутри for
Доброго времени суток, уважаемые, сразу попрошу не посылать на гугл, меня там, по идее, должны уже забанить за количество похожих запросов.
В общем такой вопрос, есть следующий код var i=0; while(i < data.length) { i++; for (var key in data[i]) { var val = data[key][7]; } } while перебирает все один раз и застывает... тобишь вообще ничего не происходит. Если перебирать массив вручную, с указанием индексов - все на месте. Кто может подсказать, куда рыть дальше. |
Цитата:
|
Кроме того, что есть сдесь - переменной i нигде и ничего не присваивается , проверил 3 жды
Внутренний цикл выполняется, то есть алертом я могу получить val, но после выполнения внутреннего цикла alert(i)(если его поставить в самом конце первого цикла) ничего не выводит. firebug выдает следующее: data[key] is undefined var val = data[key][7]; |
Потому что надо:
var val = data[i][key][7]; |
Цитата:
|
Цитата:
это с чего вдруг? у меня же не 3х уровневый массив) зачем там еще один индекс добавлять? і там используется совершенно для другого. На всякий случай проверил , конечно, но , как я и предполагал, мне вывело явно не мои значения, вывело undefined. Цитата:
|
Цитата:
|
Да, действително, простите.
Цитата:
Немного проясню замысел, сначала мне нужно получить длинну массива, а потом добраться до определенных элементов внутреннего массива, по этому использую 2 цикла. Первый цикл перебирает основной массив, второй - внутренний. |
А почему вы верхний перебираете циклом while, внутренний циклом for-in, хотя оба надо перебирать обычным циклом for?
|
размерность массива определяется из свойства массив.length. Если искомый элемент находится на фиксированном месте - нет нужды перебирать весь массив - обратитесь к нему напрямую. А массивы достаточно перебирать в большинстве случаев циклом for:
Код:
for (var i = 0; i < data.length; i++) ... |
Часовой пояс GMT +3, время: 22:58. |