简体   繁体   English

使用For循环将Javascript对象压入数组

[英]Pushing Javascript Object Inside An Array Using A For Loop

Hi I am trying push a javascript object inside an array in javascript using a for loop to iterate through the data. 嗨,我正在尝试使用for循环遍历数据,将JavaScript对象推入javascript数组中。 Here is how my code looks like. 这是我的代码的样子。

var data = {"up": [{
  "name": "jack",
  "age" : 10
},
 {
   "name" : "jhon",
   "age" : 12
  }]};

var output = {};
var output_data = {
  element: []
};

for (var key in data.up) {
  output.user_name = data.up[key].name;
  output_data.element.push(output);
}

console.log(output_data.element);

However as you can see in the example http://jsbin.com/fanazaxoda/edit?html,js,console only the second element is name 'jhon' is inserted in both occations. 但是,正如您在示例http://jsbin.com/fanazaxoda/edit?html,js中看到的那样,在两个位置都仅插入了第二个名为“ jhon”的元素。 What am I doing wrong here? 我在这里做错了什么? Please explain. 请解释。

Move the output initialization inside for loop otherwise it push reference of object each time. 将输出初始化移入for循环内部,否则每次都推入对象的引用。 Updating it's property may reflect in all array elements since all elements are referring the same object. 更新它的属性可能会反映在所有数组元素中,因为所有元素都引用同一个对象。

var output_data = {
  element: []
};

for (var key in data.up) {  
  var output = {}; // create new empty object on each iteration
  output.user_name = data.up[key].name;
  output_data.element.push(output);
}

 var data = { "up": [{ "name": "jack", "age": 10 }, { "name": "jhon", "age": 12 }] }; var output_data = { element: [] }; for (var key in data.up) { var output = {}; output.user_name = data.up[key].name; output_data.element.push(output); } console.log(output_data.element); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM