解决后端返回数据时间缺失的问题
实际情景
本地数据离线,导致后端返回的数据出现数据缺失的情况,但是在页面中使用echarts绘图时却需要进行绘制。因此需要前端对缺失的数据进行补充,缺失的数据暂时赋值为0。
封装的工具
handleHiatus(data: any[]) { if (data.length === 0) { return data; } // 获取传递给后台的时间范围,方便后期判断 let start = new Date(this.timeConfig.startDay).getTime(); let end = new Date(this.timeConfig.endDay).getTime(); let i = 0; // 当前数据的下标,方便后期插入数据 // 将当前数据下的所有键值遍历一遍赋值为0,存放对象默认值 let obj: any = {}; for (let key in data[i]) { obj[key] = 0; } while (start <= end) { data[i].sjsj = data[i].sjsj.split(' ')[0]; // 根据当前时间和数据时间对比,判断是否有缺失 let isHiatus = new Date(data[i].sjsj).getTime() !== start; let startTime = new Date(start); if (isHiatus) { // 克隆obj,防止出现引用值被改变 let newObj = deepClone(obj); // 时间需要重新赋值 newObj.sjsj = formatDate(startTime, 'yyyy-MM-dd'); // 在当前的位置插入缺失的数据 data.splice(i, 0, newObj); } // 对开始的日期进行加一 startTime.setTime(start + 24 * 60 * 60 * 1000); start = startTime.getTime(); i++; } return data; }