2015-02-16 2 views
-6

Здесь у меня есть переменная, у которой есть объект, одно значение которого представляет собой массив объектов например.Понимание For-in Loop

var test = { "key1": val1, 
"key2": [{"a":1, 
     "b":[{},{}] 
     }, 
     {"a":1, 
     "b":[{},{}] 
     }] 
    };  

Теперь я не могу понять, почему следующий фрагмент кода повторяется два раза. Должен ли он просто перебирать один раз, поскольку присутствует только один элемент массива?

фрагмент кода:

for(index in test.key2) 
+2

Это какая-то шутка или что-то еще? – jAndy

+2

Есть, безусловно, два элемента: первый - '{" a ": 1," b ": [{}, {}]}', а второй - тот же. Имеет ли ваш вопрос какое-то отношение к тому, что эти два элемента выглядят одинаково? – Pointy

+0

'key2' - массив с двумя элементами. Но не используйте для/in для массивов. В Javascript вы должны использовать номера индексов для итерации по массиву. для/in - для объектов. См. «Почему используется» для ... в «с итерацией массива такая плохая идея?» http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-such-a-bad-idea –

ответ

4

Это где хороший отступы ключ.

var test = { 
    "key1": val1, 
    "key2": [ 
     { 
      "a":1, 
      "b":[{},{}] 
     }, 
     { 
      "a":1, 
      "b":[{},{}] 
     } 
    ] 
}; 

Здесь вы можете ясно видеть, что на самом деле имеется 2 предмета.

+0

спасибо .... Я как-то пропустил это :( –

0

Потому что test.key2 является array с двумя elements, поэтому он будет проходить итерацию два раза.

Проверить test.key2.length;

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