补全日期+补全图表的日期数据

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        
        <script type="text/javascript">
            const  arr = [
                {
                    advanced_download: 0,
                    anonymous_query: 13,
                    date: "2019-08-06",
                    file_download: 0,
                    gbt_download: 0,
                    gbt_query: 8 ,
                    user_query: 10 ,
                }
            ]
            function fillAllDays(arr,month){
                const  hasData = {};
                 arr.map((item,index)=> {
                     hasData[item.date] = index;
                 });
                const cdate = new Date();   //当前日期
                const  cyear = cdate.getFullYear();      //当前年份 
                const cmonth = cdate.getMonth() + 1;  //当前月份
                const day = cdate.getDate();  //当前日
                let syear = cyear -  Math.floor(month / 12);  //起始年份
                let smonth = cmonth - (month % 12) + 1;   //起始月份
                if(smonth === 0){   //处理边界
                    syear -= 1;
                    smonth = 12;
                }
                let  ar = [];
                for(let i = 0;i< month;i++){ 
                    let sm = smonth + i;
                    let sy = syear;
                    if(sm >= 12){  //处理边界
                        sm -= 12;
                        sy += 1;
                    }
                    let len = getMonthLen(sy,sm);
                    if(sy === cyear && sm === cmonth ){  //当前月份,截止到今天
                        len = day;
                    }
                    for(let j = 1;j<=len;j++){
                        const day = j < 10? '0' +j: j.toString();
                        const smString = sm< 10? '0' +sm: sm.toString();
                        const date = sy.toString() + '-' + smString +'-' + day;
                        const obj = hasData[date] >= 0? arr[hasData[date]] : {
                            date,
                        }
                        ar.push(obj);
                    }
                }
                console.log(ar,"arrr")
                return ar;
                function getMonthLen(year,mon){
                    return new Date(year,mon,0).getDate();
                }
            }
            fillAllDays(arr,3);
        </script>
    </body>
</html>

猜你喜欢

转载自www.cnblogs.com/chengyunshen/p/11396374.html