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

<!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;
				}
				
				console.log(syear,smonth,"start")
				let  ar = [];
				for(let i = 0;i< month;i++){ 
					let sm = smonth;
					let sy = syear;
					if(i !== 0){
						const cm = sm + i;
						sy +=  Math.floor(cm / 12);
						sm = cm%12;
						if(sm === 0){
							sy-=1
							sm = 12;
						}
					}
					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,25);
		</script>
	</body>
</html>


原文地址:https://www.cnblogs.com/chengyunshen/p/11396374.html