javascript - react : Iterating through deeply nested objects and displaying them without tearing my hair out

标签 javascript json reactjs object iteration

我有一个 API 在对象格式的对象内的深层嵌套对象中返回数据。我试图从这些深度嵌套的对象中获取数据并遍历它们并将它们显示在 React 项目中。

这让我非常头疼,我找不到任何相当简单的方法。

假设我有如下所示的 JSON 数据:

Object {
   Object2 {
     Object3 {
       propertyIWantToAccess1: 'some data',
       propertyIWantToAccess2: 'some more data',
       propertyIWantToAccess3: 10,
       propertyIWantToAccess4: true
     }
   }
}

如何在组件的渲染或返回函数中遍历这些嵌套对象并获取我想要的属性?我认为嵌套 Object.keys.map 的一些变体可能是可行的方法,但我不确定如何执行此操作。

这是否需要涉及 es6 解构(一个我还不太熟悉的概念)或像 lo-dash 这样的库?

编辑澄清:数据不是包含对象的数组。它是一个包含许多嵌套对象的对象

我将 API 中的数据存储在 this.state.myPosts

我可以像这样 console.log 嵌套对象:

    const data = this.state.myPosts;

    const posts = data.content;

    console.log(posts);

但是,当我尝试使用该 posts 变量映射嵌套对象的属性时,出现错误。这不起作用:

render() {
    // Logs data
    console.log(this.state.myPosts);

    const data = this.state.myPosts;

    // Stores nested object I want to access in posts variable
    const posts = data.content;

    // Successfully logs nested object I want to access
    console.log(posts);

    // Error, this will not allow me to pass posts variable to Object.keys
    const display = Object.keys(posts).map(key =>
      <option value={key}>{posts[key]}</option>
    )


    return(
      <div>
        {display}
      </div>
    );
  }

我得到一个 TypeError: can't convert undefined to object 错误。它不允许我将 posts 变量传递给 Object.keys。为什么?

最佳答案

如果您只需要搜索 Json 字符串或数据,您可以使用查询语言:

https://www.npmjs.com/package/json-query

(相当于 JSON 的 XQuery)

关于javascript - react : Iterating through deeply nested objects and displaying them without tearing my hair out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955360/

相关文章:

javascript - 向 JavaScript 错误对象添加属性?

javascript - 在 WebStorm 11 中调试 WebPack

javascript - 在哪里实现 ng-click 函数、 Controller 或指令?

json - Laravel JSON 响应返回 protected 数据

java - Jackson - 将 boolean 值序列化为 1/0 而不是 true/false

java - 在 Apache Spark 中解析 JSON 时出现奇怪的错误

javascript - 在 react 中安装后如何设置元素的状态?

javascript - 使用 jQuery 确定视频文件大小

javascript - ECMA6 在 react 路由器中传播参数

javascript - Codecademy React 语法与官方教程