无法访问JSON对象数组中的元素

时间:2018-08-17 03:16:11

标签: javascript json reactjs

我正在尝试访问JSON对象数组的特定元素。要测试,我只需:

{console.log(this.state.stockCharts)}

这将返回(在浏览器中):

Returning the JSON

这很棒,但是现在我想访问一个特定的元素。说第一个要素。我输入:

{console.log(this.state.stockCharts[0])}

浏览器就像:nah mate

undefined

这可能真的很简单,但是在过去的45分钟里,我一直在用键盘敲打我的头,但没有任何效果。谢谢大家!

编辑1(对于Akrion)

我用来访问API的查询是:

https://www.alphavantage.co/query?function=TIME_SERIES_WEEKLY&symbol=MSFT&apikey=demo

这是我从电话中得到的回馈:

Calling Alpha Advantage API

我两次调用此API,并在收到响应后将其推送到我的stockCharts数组:

this.state.stockCharts.push(result)

编辑2(适用于初学者)

我将状态初始化为通常的状态:

this.state = {
        stockCharts: []
}

2 个答案:

答案 0 :(得分:3)

我已经使用本地提供的api进行了验证,并且能够获取数据。

不建议您将api响应推送到stockCharts的第一件事。这意味着不建议直接更改状态。

您可以通过以下方式推送api响应

this.setState(prevState => ({
   stockCharts: [...prevState.stockCharts, result]
}));

现在处于渲染状态

render(){
   this.state.stockCharts.map((data, i) => {
      console.log("data", data); // this will give each object
      console.log("Meta Data", data["Meta Data"]); //This will give meta data information
      console.log("Weekly Time Series", data["Weekly Time Series"]);// this will print weekly time information
   });
   return(

   )
}

这是您的期望吗?

答案 1 :(得分:1)

这可能是因为您突变了不推荐的状态。 尝试而不是打电话给this.state.stockCharts.push(result)来做this.setState({stockCharts: [...this.state.stockCharts, result]})

https://reactjs.org/docs/state-and-lifecycle.html