【问题标题】:Access Object inside Array in React JSON API Call在 React JSON API 调用中访问数组内的对象
【发布时间】:2018-08-17 07:11:45
【问题描述】:

我正在进行一个 API 调用,该调用在 React 应用程序中返回 JSON 数据。数据包含嵌套在数组中的对象。我想访问对象中的数据。

我能够访问和遍历数组数据并用这个记录它:

loadSearchResults = (event) => {
event.preventDefault();
var search = this.state.value;

axios.get(`https://images-api.nasa.gov/search?q=` + `search`)
  .then(res => {
    const results = res.data.collection.items;
    console.log(results);
  });

}

这会注销阵列。

我想访问每个对象内的数据。

如何迭代和显示对象数据(即描述、中心、媒体类型)?换句话说,遍历数组后,如何遍历数组中的对象?

【问题讨论】:

    标签: arrays json reactjs object iteration


    【解决方案1】:

    Object.values() 应该可以工作:

      axios
      .get(`https://images-api.nasa.gov/search?q=` + `search`)
      .then(res => res.data.collection.items)
      .then(json => {
        json.map(obj => console.log(Object.values(obj)))
      })
    

    <div> 内呈现数据(假设该组件具有状态/ 是一个类):

    axios
      .get(`https://images-api.nasa.gov/search?q=` + `search`)
      .then(res => res.data.collection.items)
      .then(json => {
        json.map(obj => this.setState({ allTheValues: Object.values(obj) }))
      })
    
    render() {return (<div>{this.state.allTheValues.map(value => value)}</div>)}
    

    棘手的部分是你在一个异步的承诺中,但这是另一个问题

    【讨论】:

    • 试了一下,报错:res.json is not a function
    • 好的,replace res.json() 和原来的 res.data.collection.items 因为我相信 Object.values() 是根本问题
    • 这工作并成功地控制台记录了数据,但我正在尝试渲染数据并将其显示在 div 中。
    • 当 JSON 数据是数组中的数组或对象中的对象时,我通常可以这样做,但是关于它是数组中的对象的某些事情让我失望。在使用 .map (如果它是一个数组)和使用 Object.keys (如果它是一个对象)之间陷入困境。
    • 数组中的对象不应该让你失望。如果您正在使用的组件具有状态-请尝试使用我在原始答案中所做的修订。棘手的部分是你在一个异步的承诺中,但这是另一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2017-07-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多