您好我正在尝试使用for循环在javascript中推送数组内的javascript对象来迭代数据。这是我的代码的样子。
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);
然而,正如您在示例http://jsbin.com/fanazaxoda/edit?html,js,console中看到的那样,只有第二个元素是名称' jhon'插入两个位置。我在这做错了什么?请解释一下。
答案 0 :(得分:8)
将输出初始化内部移动到循环中,否则每次都会推送对象的引用。更新它的属性可能反映在所有数组元素中,因为所有元素都引用同一个对象。
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);