Javascript: перебирать объекты - PullRequest
0 голосов
/ 10 июня 2011

Я перебираю этот объект:

var object = { 
   first : {
      child1 : 'test1',
      child2 : 'test2'
   },

    second : {
       child1 : 'test3',
       child2 : 'test4'
    },

   first : {
      child1 : 'test5',
      child2 : 'test6!'
   }
};

с этим:

for(var attribute in object){
    alert(attribute + " : " + object[attribute]);
}

Сначала казалось, что он работает, но он повторяется только для дочерних объектов с уникальным именем, поэтому первый объект с: first пропускается.

Итак, каково правильное решение для перебора всего объекта?

Ответы [ 2 ]

4 голосов
/ 10 июня 2011

Объекты JavaScript являются ассоциативными картами и не могут иметь несколько значений с одним и тем же ключом (именем). Ваши данные не могут иметь такую ​​структуру.

Другим вариантом может быть массив пар ключ-значение.

var object = [
   ["first", {
      child1 : 'test1',
      child2 : 'test2'
   }],
   ["second", {
       child1 : 'test3',
       child2 : 'test4'
   }],
   ["first", {
      child1 : 'test5',
      child2 : 'test6!'
   }]
];

var i, attribute, value;
for (i = 0; i < object.length; i++) {
    attribute = object[i][0];
    value = object[i][1];
    alert("" + attribute + " = " + value);
}
1 голос
/ 10 июня 2011

Нет проблем с итерацией, скорее проблема с объектом.Второе свойство с именем first заменяет первое first, стирая его.

Кто первый?

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