Javascript 映射和对象填充对象React.js/js
所以我有一个数组,其中只有一个对象,但是这个对象里面可能有3个或更多的对象。 这几乎与我调用它的api的格式完全相同(长度之所以有这样的数字是因为我在api调用中使用了参数): 我试图循环0、1、8和19中的每一个,从中提取数据并在表中显示它们。每次我尝试时,它只映射第一个,而不映射其他3个 我刚刚做了典型的:Javascript 映射和对象填充对象React.js/js,javascript,arrays,reactjs,javascript-objects,array.prototype.map,Javascript,Arrays,Reactjs,Javascript Objects,Array.prototype.map,所以我有一个数组,其中只有一个对象,但是这个对象里面可能有3个或更多的对象。 这几乎与我调用它的api的格式完全相同(长度之所以有这样的数字是因为我在api调用中使用了参数): 我试图循环0、1、8和19中的每一个,从中提取数据并在表中显示它们。每次我尝试时,它只映射第一个,而不映射其他3个 我刚刚做了典型的: myApi.map((people, i) => { let row = <tr>{people[i].num}</tr><tr>{peop
myApi.map((people, i) => {
let row = <tr>{people[i].num}</tr><tr>{people[i].name}</tr>
tableRow.push(row);
})
myApi.map((人,我)=>{
let row={people[i].num}{people[i].name}
tableRow.push(row);
})
,但正如我所说,它只显示第一条数据,而不显示其他3条数据。哪里出错了?
map
在这种情况下并不合适,因为您只是在迭代对象并将其推送到一个单独的数组中。另外,请注意,您发布的不是数组;它是一个物体
要迭代对象的值,可以使用object.values
和简单的forEach
:
让myApi=[{
0: {
0: {
数目:1,,
名字:“富兰克林”,
},
1: {
数字:58,
姓名:“哈罗德”,
},
8: {
数字:9,
姓名:“尤金”,
},
19: {
总数:5,
姓名:'克莱夫',
},
},
1: {
20: {
数字:6,
姓名:'鲍勃',
},
}
}];
设tableRows=[];
Object.values(myApi[0]).forEach(集合=>{
Object.values(collection.forEach)(person=>{
tableRows.push('Name为'+person.Name+';num为'+person.num));
});
});
console.log(tableRows)代码>您需要在数组中的对象中循环
myApi.map((people) => {
for(var person in people) {
let row = <tr>{people[person].num}</tr><tr>{people[person].name}</tr>
tableRow.push(row);
}
})
myApi.map((人)=>{
for(人中人){
let row={people[person].num}{people[person].name}
tableRow.push(row);
}
})
我相信是这样的。它看起来像一个带有0、1、8和19键的对象;不是数组,这对我不起作用。因为我使用的是react,所以我使用axios获得了信息,并用这些信息设置了一个state对象。当我试图映射它时,我使用this.state.myApi
,但如果我使用console.log(this.state.myApi[0])代码>由于某种原因,它返回为未定义。编辑:数组中只有一个对象,因此您添加的对象不适用于我。@NathanGeckle代码中的object.values(myApi).forEach(person=>{…})
?它可以将所有内容显示到表中,但我试图显示的部分信息没有在表中表示未定义。编辑:别介意那部分是我的错。在VSCode中使用“更改所有事件”时,我不小心。谢谢你的帮助,这对我没用。此人返回时未定义。
myApi.map((people) => {
for(var person in people) {
let row = <tr>{people[person].num}</tr><tr>{people[person].name}</tr>
tableRow.push(row);
}
})