Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代嵌套对象以访问其在React Js中的值_Javascript_Reactjs_Loops_Object_Nested - Fatal编程技术网

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不是一个很好的借口)。将用该注释更新它。