格式化从 API 获取的数据以创建图表
Formatting data got from API to create a chart
有!我是网络开发的新手,所以我需要一些帮助!
我正在尝试创建一个应用程序,您可以在其中选择股票名称并显示其价格变化图表。我正在使用 this api and ApexCharts 创建图表。
问题是图表似乎没有包含我的数据,所以图表看起来是空的。我正在做的是:
从 API 获取数据后,看起来像这样:
"data": [
{
"open": 129.8,
"high": 133.04,
"low": 129.47,
"close": 132.995,
"volume": 106686703.0,
"adj_high": 133.04,
"adj_low": 129.47,
"adj_close": 132.995,
"adj_open": 129.8,
"adj_volume": 106686703.0,
"split_factor": 1.0,
"dividend": 0.0,
"symbol": "AAPL",
"exchange": "XNAS",
"date": "2021-04-09T00:00:00+0000"
},
[...]
]
然后我尝试创建一个对象数组(我只需要日期和 O、H、L、C 值),如下所示:
series: [{
data: [{
x: new Date(1538778600000),
y: [6629.81, 6650.5, 6623.04, 6633.33]
},
{
x: new Date(1538780400000),
y: [6632.01, 6643.59, 6620, 6630.11]
}
]
}],
我为此实现的功能是:
function formatData(stockData, symbol) {
options.title.text = symbol;
let solution = [];
var apiData = stockData.data;
for (var entry in apiData) {
let obj = {};
obj.x = new Date(entry.date); //the x axis will be containing the date
let price = [];
price.push(entry.open);
price.push(entry.high);
price.push(entry.low);
price.push(entry.close);
obj.y = price; //the y axis will be containing the prices
solution.push(obj);
}
options.series[0].data = solution.sort((a, b) => a.x - b.x); //put in series what we obtained
}
格式化数据后得到的结果:
options.series:
{data: Array(10)}
data: Array(10)
0:
x: Invalid Date
[[Prototype]]: Object
y: Array(4)
0: undefined
1: undefined
2: undefined
3: undefined
为什么我得到 'Invalid date' 和 'undefined'?当我试图在控制台中简单地显示日期时,它工作正常,但在我创建的数组中它说无效...这就是为什么我的图表是空的并且不显示任何值的原因。
感谢大家的帮助!
我觉得formatData
功能有问题。改变这一行
for (var entry in apiData)
,将 in
替换为 of
。
for (var entry of apiData) {
或使用forEach
遍历数组。
有!我是网络开发的新手,所以我需要一些帮助!
我正在尝试创建一个应用程序,您可以在其中选择股票名称并显示其价格变化图表。我正在使用 this api and ApexCharts 创建图表。
问题是图表似乎没有包含我的数据,所以图表看起来是空的。我正在做的是:
从 API 获取数据后,看起来像这样:
"data": [
{
"open": 129.8,
"high": 133.04,
"low": 129.47,
"close": 132.995,
"volume": 106686703.0,
"adj_high": 133.04,
"adj_low": 129.47,
"adj_close": 132.995,
"adj_open": 129.8,
"adj_volume": 106686703.0,
"split_factor": 1.0,
"dividend": 0.0,
"symbol": "AAPL",
"exchange": "XNAS",
"date": "2021-04-09T00:00:00+0000"
},
[...]
]
然后我尝试创建一个对象数组(我只需要日期和 O、H、L、C 值),如下所示:
series: [{
data: [{
x: new Date(1538778600000),
y: [6629.81, 6650.5, 6623.04, 6633.33]
},
{
x: new Date(1538780400000),
y: [6632.01, 6643.59, 6620, 6630.11]
}
]
}],
我为此实现的功能是:
function formatData(stockData, symbol) {
options.title.text = symbol;
let solution = [];
var apiData = stockData.data;
for (var entry in apiData) {
let obj = {};
obj.x = new Date(entry.date); //the x axis will be containing the date
let price = [];
price.push(entry.open);
price.push(entry.high);
price.push(entry.low);
price.push(entry.close);
obj.y = price; //the y axis will be containing the prices
solution.push(obj);
}
options.series[0].data = solution.sort((a, b) => a.x - b.x); //put in series what we obtained
}
格式化数据后得到的结果:
options.series:
{data: Array(10)}
data: Array(10)
0:
x: Invalid Date
[[Prototype]]: Object
y: Array(4)
0: undefined
1: undefined
2: undefined
3: undefined
为什么我得到 'Invalid date' 和 'undefined'?当我试图在控制台中简单地显示日期时,它工作正常,但在我创建的数组中它说无效...这就是为什么我的图表是空的并且不显示任何值的原因。
感谢大家的帮助!
我觉得formatData
功能有问题。改变这一行
for (var entry in apiData)
,将 in
替换为 of
。
for (var entry of apiData) {
或使用forEach
遍历数组。