• 解决后端返回数据时间缺失的问题


    实际情景

    本地数据离线,导致后端返回的数据出现数据缺失的情况,但是在页面中使用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;
    }
  • 相关阅读:
    酒店预定系统
    毕业论文管理系统 ——总体设计
    毕业论文管理系统
    毕业管理系统——面向对象方法 项目前期
    项目前期
    5/23用户故事和backlog
    5/18
    4.8
    4.3
    第四章 需求分析
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/14680421.html
Copyright © 2020-2023  润新知