如何用JavaScript实现页面重载时每分钟向数组追加股票价格数据?
问题修复与实现代码
你的原有实现存在3个核心问题:
- 每次页面刷新都会新建空数组,没有读取localStorage中存储的历史数据
- 原有判断逻辑无论localStorage是否有值,都会强制将存储字段设为空数组,历史数据被直接覆盖
- 最终仅存入包含当前单次数值的数组,没有做追加操作
同时额外实现了你需要的早间初始化逻辑,即跨交易日时自动清空历史数组重新累计。
可直接使用的实现代码
// 1. 获取当前日期,用于判断是否需要早间重置数组 const today = new Date().toLocaleDateString() // 2. 读取本地存储的历史数据和上次更新日期 let storedData = localStorage.getItem('test') let lastUpdateDate = localStorage.getItem('last_update_date') let vwap_ltp_array = [] // 3. 判断是否需要初始化:本地无数据 或 到了新的交易日 if (!storedData || lastUpdateDate !== today) { // 初始化空数组,更新日期标记 vwap_ltp_array = [] localStorage.setItem('last_update_date', today) } else { // 有历史数据且是同一天,反序列化得到数组 vwap_ltp_array = JSON.parse(storedData) } // 4. 追加当前最新的数值 vwap_ltp_array.push(vwap_ltp_percentage) // 5. 序列化后存回localStorage localStorage.setItem('test', JSON.stringify(vwap_ltp_array)) // 测试打印 console.log('当前累计数组:', vwap_ltp_array) console.log('本地存储内容:', localStorage)
逻辑说明
- localStorage仅支持存储字符串类型数据,所以读取数组时需要用
JSON.parse反序列化,存储时需要用JSON.stringify序列化 - 新增的日期标记字段
last_update_date用于实现早间自动初始化需求,每个自然日第一次加载页面时会自动清空之前的历史数组 - 每次页面重载后都会先读取历史数据再追加新值,不会出现数据丢失的问题
内容的提问来源于stack exchange,提问作者ashish gupta
相关产品推荐
相关产品推荐

