我正在尝试从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
还有其他方法可以将数据添加到图表中吗?
答案 0 :(得分:1)
JavaScript有几种类型的循环。 annual
最有可能是没有自定义迭代器的对象,这就是为什么收到此消息的原因。
1)for ... of
用于循环遍历iterable objects,例如数组和其他类似数组的结构,或者定义了自定义迭代器的对象。
2)for ... in
用于循环遍历对象键(和数组索引)。
尝试改用for ... in
:
for(let i in annual){
this.stockData.labels.push(annual[i].date)
this.stockData.datasets.push(annual[i].epsActual)
}