无法在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

我正在尝试将对象存储到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);
 }

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){