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

实际情景

本地数据离线,导致后端返回的数据出现数据缺失的情况,但是在页面中使用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;
}

 

posted @ 2021-04-20 11:45  放飞的回忆  阅读(275)  评论(0编辑  收藏  举报