嗨,我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
但是,正如您在示例http://jsbin.com/fanazaxoda/edit?html,js,console中看到的那样,只有第二个元素名称'jhon'被插入两个世界中.我在这做错了什么?请解释.
将输出初始化内部移动到循环中,否则每次都推送对象的引用.更新它的属性可能反映在所有数组元素中,因为所有元素都引用同一个对象.
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);
}
Run Code Online (Sandbox Code Playgroud)
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);Run Code Online (Sandbox Code Playgroud)