2015-03-26 2 views
0

После первой итерации цикла eachmyArr полностью загружен всеми 4 объектами. (Посмотрите на консоль для печати из console.log(myArr) - после первый цикл).Зацикливание через массив объектов - массив полностью загружен после первой итерации

Я изо всех сил, чтобы понять, как это происходит, потому что если вы посмотрите на печать из console.log(item), он содержит только 1 объект, не все 4.

Так как myArr получение полной загрузке после первой итерации , когда это должно происходить только после 4-й итерации?

Вот ссылка на JSFiddle с тем же кодом: http://jsfiddle.net/bengrunfeld/fdtom886/

var obj = [ 
    { 
     "id": 1111, 
     "todoText": {"index":2,"items":[{"firstName":"Benny"},{"lastName":"Hill"}]} 
    }, 
    { 
     "id": 2222, 
     "todoText": {"index":2,"items":[{"firstName":"Bob"},{"lastName":"Marley"}]} 
    }, 
    { 
     "id": 3333, 
     "todoText": {"index":2,"items":[{"firstName":"John"},{"lastName":"Lennon"}]} 
    }, 
    { 
     "id": 4444, 
     "todoText": {"index":2,"items":[{"firstName":"Led"},{"lastName":"Zeplin"}]} 
    }, 
]; 

var myArr = []; 

$.each(obj, function(key, item) { 
    console.log(myArr); 
    console.log(item); 
    myArr.push(item); 
}); 
+0

@Rooster - извините, но если вы посмотрите на 1-й отпечаток из 'console.log (myArr)' в своем JSFiddle, он по-прежнему распечатывает полностью загруженный массив. По крайней мере, это на моей машине (Chrome). Не могли бы вы объяснить, почему это так? – Ben

ответ

2

Вы протоколирование массива (по ссылке) на консоль. После его расширения каждый цикл выполняется, что означает, что массив имеет 4 элемента.

Чтобы увидеть здесь разницу, вы можете войти в систему myArr.length, и вы увидите, что длина - это то, что вы ожидаете на каждой итерации каждого цикла.

RE: Ваш «бонусный вопрос», первый отпечаток для меня не пуст.

+0

Чтобы вырезать ссылку, вы можете сделать 'console.log (myArr.slice (0, myArr.length));' – blex

+1

Да, или вы могли бы 'myArray.toString()', если бы вы просто хотели увидеть грубое представление о том, что укажите, был ли тогда массив. Либо они не очень полезны в изоляции. – brianvaughn

+0

Итак, когда вы говорите, что я регистрирую ссылку на массив, вы имеете в виду, что к моменту появления массива на экране он уже был загружен всеми 4 значениями на жестком диске? – Ben

Смежные вопросы