无法在javascript中将对象存储到数组中
我正在尝试将对象存储到Javascript数组中无法在javascript中将对象存储到数组中,javascript,arrays,object,Javascript,Arrays,Object,我正在尝试将对象存储到Javascript数组中 var res=[ {name:'Alex',place:'US',age:20}, {name:'Jason',place:'Canada',age:25} ]; var obj={}; var data=[]; for ( let i in res){ obj.name=res[i].name; obj.place=res[i].place; data.push(obj); } consol
var res=[
{name:'Alex',place:'US',age:20},
{name:'Jason',place:'Canada',age:25}
];
var obj={};
var data=[];
for ( let i in res){
obj.name=res[i].name;
obj.place=res[i].place;
data.push(obj);
}
console.log(data);
我的预期产出:
[
{name:'Alex',place:'US'}.
{name:'Jason',place:'Canada'}
]
我得到的实际产出:
[
{name:'Jason',place:'Canada'},
{name:'Jason',place:'Canada' }
]
为什么我会得到这种类型的输出?
我是noobie。请帮帮我。您的
var obj={}内存中只有一个对象代码>-该行运行一次,并在内存中创建一个对象,然后在for
循环中的每次迭代中对该对象进行变异,并推送到数组。最后,数组包含对同一对象的2个引用
改为在循环内创建对象:
for ( let i in res){
var obj = {};
obj.name=res[i].name;
obj.place=res[i].place;
data.push(obj);
}
您也可以考虑使用<代码> .map < /C> >:
const res=[
{姓名:'Alex',地点:'US',年龄:20},
{姓名:'Jason',地点:'Canada',年龄:25}
];
const data=res.map(({name,place})=>({name,place}));
控制台日志(数据)代码>您基本上是在循环中一次又一次地更新同一对象。每个循环需要有不同的对象。因此,您需要在for循环中移动var obj={}
var res=[{姓名:'Alex',地点:'US',年龄:20},{姓名:'Jason',地点:'Canada',年龄:25}];
var数据=[];
for(让我输入res){
var obj={};
obj.name=res[i].name;
obj.place=res[i]。地点;
数据推送(obj);
}
控制台日志(数据)代码>使用.map会容易得多
var-res=[
{姓名:'Alex',地点:'US',年龄:20},
{姓名:'Jason',地点:'Canada',年龄:25}
];
var obj={};
var data=res.map({name,place})=>{
返回({name,place})
});
控制台日志(数据)
另请参见,了解为什么您可能不想使用for(let i in res){
。