如何遍历JSON对象所有值传入setData,实现MySQL数据加载到K线图
解决LightweightCharts仅显示单条K线的问题
错误原因
- 第一版遍历逻辑每次覆盖单个变量,仅保留了数组最后一项的数值,最终传入
setData的只有单条数据。 - 第二版循环调用
setData的逻辑不符合API要求:setData为全量替换数据的方法,每次调用都会覆盖之前已传入的所有数据,仅最后一次调用的内容生效;同时之前定义的dateData等变量为单个值而非数组,取下标操作无法获取到正确数值。
正确实现
直接通过map将原始数据批量转换为LightweightCharts要求的K线格式数组,一次性传入setData即可:
const data = <?php echo json_encode($data_array) ?>; // 批量格式化数据 const klineData = data.map(item => ({ time: item.Date, open: item.Open, high: item.High, low: item.Low, close: item.Close })); // 初始化图表并加载数据 const chart2 = LightweightCharts.createChart(document.body, { width: 400, height: 300 }); const candlestickSeries = chart2.addCandlestickSeries(); candlestickSeries.setData(klineData);
如果后续需要新增单条K线数据,不要调用setData,改用candlestickSeries.update(新的K线对象)即可实现增量更新。
内容的提问来源于stack exchange,提问作者user16845627
相关产品推荐
相关产品推荐

