Javascript:迭代对象

时间:2011-06-10 17:51:07

标签: javascript object loops

我在迭代这个对象:

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 个答案:

答案 0 :(得分:4)

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 :(得分:1)

迭代没有问题,对象存在问题。名为first的第二个属性替换了第一个first,删除了它。

谁是第一个?