Javascript 如何迭代嵌套对象以访问其在React Js中的值
我已经搜索了很多,但我没有找到一个合适的答案来解决这个问题。我有一个从提取的数据中生成的对象,其结构如下:Javascript 如何迭代嵌套对象以访问其在React Js中的值,javascript,reactjs,loops,object,nested,Javascript,Reactjs,Loops,Object,Nested,我已经搜索了很多,但我没有找到一个合适的答案来解决这个问题。我有一个从提取的数据中生成的对象,其结构如下: { id: string, title: string, price: { currency: string, amount: number, }, picture: string, condition: string, free_shipping: string,
{
id: string,
title: string,
price: {
currency: string,
amount: number,
},
picture: string,
condition: string,
free_shipping: string,
sold_quantity: string,
};
当我尝试遍历嵌套对象时(第二级)
控制台向未定义对象抛出错误。我尝试过:Object.keys()方法或将对象转换为数组,但没有成功
有人知道我如何迭代这个对象并获得每个属性的值吗?货币,金额
提前感谢您的帮助。您尝试过这种方法吗
Object.keys(myObject).map(函数(键){
});代码>要正确理解这个问题,我们确实需要确切了解您是如何尝试迭代对象的。正如其他用户所提到的,如何做到这一点的简短答案是
Object.keys(obj.map)((key)=>{
常量值=对象[key]
//做有价值的事(?)
返回值
})
当然,对于上面的例子,我们不会正确地访问嵌套对象(price
)的键,要实现这一点,您必须在现有对象中执行object.keys(obj).map(()=>{})
。比如说:
{
id: string,
title: string,
price: {
currency: string,
amount: number,
},
picture: string,
condition: string,
free_shipping: string,
sold_quantity: string,
};
Object.keys(obj.map)((key)=>{
常量值=对象[key]
//做有价值的事(?)
如果(值的类型==='object'){
const nestedObjectKeys=Object.keys(值).map((nestedKey)=>{
//做事
})
}
返回值
})
})
这就是我们需要关于您的问题的更多细节的地方,如果您知道这是您想要访问和迭代的内容,只需使用相同的内容,但直接在price
对象上使用。应该是这样的:
{
id: string,
title: string,
price: {
currency: string,
amount: number,
},
picture: string,
condition: string,
free_shipping: string,
sold_quantity: string,
};
Object.keys(obj.price).map((key)=>{
常量价格值=对象价格[关键字]
//做有价值的事(?)
返回值
})
以下是两种情况的简单演示:
const-App=()=>{
常量对象={
id:“我的id”,
标题:“我的标题”,
价格:{
货币:美元,
金额:100,
},
图片:“我的图片”,
条件:“我的条件”,
免费送货:“免费送货”,
销售数量:“销售数量”,
};
返回(
示例1:遍历整个对象
{Object.keys(obj.map)((key)=>{
常量值=对象[key]
返回(
{typeof value==='object'
? (
找到一个嵌套对象!现在让我们执行另一个对象.keys().map!
{Object.keys(value.map)((nestedKey)=>(
{nestedKey}:{value[nestedKey]}
))}
)
:{key}:{value}
}
)
})}
示例2:仅对嵌套对象进行迭代
{Object.keys(obj.price).map((key)=>(
{key}:{obj.price[key]}
))}
)
}
ReactDOM.render(
,
document.getElementById('app')
);代码>
首先,我非常感谢您对我问题的回答。这真的很有帮助
事实上,我的错误来自我在代码中定义的状态。我将在下面几行中解释它
此对象结构(如下)是为我从API接收数据而创建的:
{
id: string,
title: string,
price: {
currency: string,
amount: number,
},
picture: string,
condition: string,
free_shipping: string,
sold_quantity: string,
};
API没有保持我在下面向您展示的相同结构,因此我必须在获取时重新采样。但是当我进行重采样时,我没有插入price对象
所以,当我尝试使用Obj.map
时。React爆炸并对我说它不能在未定义的上迭代
这真是一个令人头痛的问题,因为我试图理解为什么不能迭代嵌套对象。但最终,这并不是根本问题
最后,集成从API获取的数据并随后转换为我的desire结构的方法比我想象的要简单
只要使用点符号,我就可以从对象和嵌套对象中访问我需要的特定项。例如:
item.price.amount // Returns 1990
item.price.currency // Returns USD
希望这个答案能对你有所帮助。但这个问题使我完全理解了如何通过objects.keys(obj.map)(key=>(//code))
特别感谢@theJuls的详细解释。您好,您能提供一份关于您正在尝试做什么的详细说明吗?如果我们看不到代码在做什么,我们就无法帮助修复代码。如果您试图迭代一个对象,尽管我认为它看起来类似于object.entries(data.price)
以获取嵌套属性的键值对数组,或者object.values(data.price)
仅用于值。您想要迭代,但这里没有数组,只需使用yourData.price
访问price
属性,就可以直接迭代值,但为什么要迭代键来获取值呢?Idk。我忘了Object.values()是一件事(我知道XD不是一个很好的借口)。将用该注释更新它。