繁体   English   中英

如何遍历来自 fetch() 的 JSON 响应,然后将其添加到图表数据中?

[英]How to iterate through JSON response from fetch() then add it to chart data?

我正在尝试从 API 获取 JSON 响应,然后将其添加到 Chart.js 图表中。 这是Vue组件的JS代码

import LineChart from './LineChart.js'
  export default {
      name: 'Chart',
      components: LineChart,
      data () {
        return {
          loaded: false,
          stockData: {
            labels: null,
            datasets: null
          }
        }
      },
      async mounted () {
        this.loaded = false
        try{
          const response = await fetch('http://localhost/AAPL')
          const stock = await response.json()
          console.log(stock)
          let annual = stock.Earnings.Annual
          for(let i of annual){
            this.stockData.labels.push(i.date)
            this.stockData.datasets.push(i.epsActual)
          }
          this.loaded = true
        } catch (e){
          console.error(e)
        }
      }
  }

但我得到了错误

Chart.vue?36ee:38 TypeError: annual[Symbol.iterator] is not a function

有没有其他方法可以将数据添加到图表中?

JavaScript 有几种类型的循环。 最有可能的annual是没有自定义迭代器的对象,这就是您收到此消息的原因。

1) for ... of用于循环可迭代对象,例如数组和其他类似数组的结构,或定义了自定义迭代器的对象。

2) for ... in用于循环对象键(和数组索引)。

尝试使用for ... in代替:

for(let i in annual){
    this.stockData.labels.push(annual[i].date)
    this.stockData.datasets.push(annual[i].epsActual)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM