Javascript推送复杂的对象

时间:2011-12-21 14:51:40

标签: javascript arrays

我正在构建一个具有array类型属性的对象数组:

这里有一些简化的代码:

var _data = [];
for(var i=0;i<10;i++) {
  var element = {
        id: i,
        answers: []
  };

  for(var j=0;j<3;j++) {                        
    var answer = {
      id: j,
      description: ''
    };
   element.answers.push(answer);
  }
  _data.push(element);
}

在两个cicle的末尾,数组_data有10个元素,但每个元素的属性为空(我希望每个元素有3个项目)。 为什么会这样?似乎推送不会推动整个对象,而只推动“第一级属性”。 感谢

1 个答案:

答案 0 :(得分:1)

在Firefox 8中运行代码会生成以下_data数组:

_data:

[{id:0, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:1, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:2, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:3, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:4, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:5, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:6, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:7, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:8, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}, 
 {id:9, answers:[{id:0, description:""}, {id:1, description:""}, {id:2, description:""}]}]

也许你有一个拼写错误,因为它是answers而不是answer