无法将对象存储到JavaScript的数组中。
无法将对象存储到JavaScript的数组中。
我试图将对象存储到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' } ]
为什么会得到这样的输出?
我是新手,请帮助我。
无法将对象存储到JavaScript数组中的问题可能是由于以下原因引起的:
1. 代码中没有声明或初始化数组变量。
2. 对象的属性没有正确设置或传递给数组。
为了解决这个问题,可以尝试以下解决方法:
1. 确保代码中有一个已声明和初始化的数组变量。
2. 确保将对象的属性正确地设置或传递给数组。
下面是一个解决该问题的示例代码:
var res=[ {name:'Alex',place:'US',age:20}, {name:'Jason',place:'Canada',age:25} ]; var obj={}; var data = res.map(({ name, place }) => { return ({ name, place }) }); console.log(data);
在这个示例代码中,我们使用.map方法来遍历res数组中的每个对象,并从中提取出name和place属性。然后,将提取的属性作为新的对象存储到一个名为data的数组中。最后,使用console.log()方法将data打印到控制台上。
通过使用.map方法,我们可以更容易地将对象存储到数组中,并提取所需的属性。这种方法可以简化代码,并使代码更易读和维护。
无法将对象存储到JavaScript数组中的问题是因为在循环中重复更新了同一个对象。解决方法是在for循环中将var obj={}
移到内部,以便为每个循环创建不同的对象。
代码如下:
var res=[{name:'Alex',place:'US',age:20},{name:'Jason',place:'Canada',age:25}]; var data=[]; for ( let i in res){ var obj={}; obj.name=res[i].name; obj.place=res[i].place; data.push(obj); } console.log(data);
这段代码首先定义了一个对象数组res
,其中包含了两个对象。然后,我们创建了一个空数组data
来存储处理后的对象。
在for循环中,我们使用let i in res
来遍历res
数组中的每个对象。在每次循环中,我们使用var obj={}
创建一个新的空对象obj
。
接着,我们将res[i]
中的name
和place
属性的值分别赋给obj
的name
和place
属性。
最后,我们将obj
对象添加到data
数组中。
通过将var obj={}
移到for循环内部,我们确保了每次循环都创建了一个新的对象,并且成功将这些对象存储在data
数组中。
最后,我们使用console.log(data)
打印出处理后的对象数组data
。
在JavaScript中,无法将对象存储到数组中的问题通常由以下原因导致:你只有一个对象存储在内存中,使用var obj = {};
这行代码只运行一次,并在内存中创建一个对象,然后你在for
循环中的每次迭代中对其进行修改,并将其推送到数组中。最终,数组中包含对同一个对象的两个引用。
为了解决这个问题,可以在循环中创建对象:
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);