gpt4 book ai didi

javascript - 无法将对象存储到 JavaScript 中的数组中

转载 作者:行者123 更新时间:2023-11-29 16:31:22 25 4
gpt4 key购买 nike

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

为什么我会得到这种类型的输出?我是菜鸟,请帮助我。

最佳答案

您的 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 代替:

const res=[
{name:'Alex',place:'US',age:20},
{name:'Jason',place:'Canada',age:25}
];
const data = res.map(({ name, place }) => ({ name, place }));
console.log(data);

关于javascript - 无法将对象存储到 JavaScript 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56425465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com