手写日历-数组组成

function packageArr () {
       let allDays = getMonthDay();
       // 查询有几周
       let weeks = allDays.length / 7 > 4 ? 5 : 4;
       // 查询每周一的下标
       let indexArr = [];
       allDays.map((val, index) => {
          if(val.week === 1){
              indexArr.push(index);
          }
       });
       // 如果第一天正好是 周一 则剔除indexArr[0]
       if(indexArr[0] === 0){
          indexArr.splice(0, 1);
       };
       // 将 每周塞进数组
       let arr = [];
       for(let i = 0;i < weeks;i++){
           if(i === 0){
              arr[i] = allDays.slice(0, indexArr[0]);
           }else{
              arr[i] = allDays.slice(indexArr[i-1], indexArr[i]);
           }
           if(arr[i].length < 7 && arr[i][0].week === 1){
               let diff = 7 - arr[i].length;
               for(let j = 0;j < diff;j++){
                  arr[i].push({});
               }
           }else if(arr[i].length < 7 && arr[i][0].week !== 1){
              let diff = 7 - arr[i].length;
              for(let j = 0;j < diff;j++){
                  arr[i].unshift({});
              }
           }
       };
       return arr;
    //   返回值
    //[
    //  [{}, {}, {}, {}, {day: '2021-01-01', week: 5},
{day: '2021-01-02', week: 6}, {day: '2021-01-03', week: 7},],
    //  [
    //    {day: '2021-01-04', week: 1}
    //    {day: '2021-01-05', week: 2}
    //    {day: '2021-01-06', week: 3}
    //    {day: '2021-01-07', week: 4}
    //    {day: '2021-01-08', week: 5}
    //    {day: '2021-01-09', week: 6}
    //    {day: '2021-01-10', week: 7}
    //  ],
    //  [
    //    {day: '2021-01-11', week: 1}
    //    {day: '2021-01-12', week: 2}
    //    {day: '2021-01-13', week: 3}
    //    {day: '2021-01-14', week: 4}
    //    {day: '2021-01-15', week: 5}
    //    {day: '2021-01-16', week: 6}
    //    {day: '2021-01-17', week: 7}
    //  ],
    //  [
    //    {day: '2021-01-18', week: 1}
    //    {day: '2021-01-19', week: 2}
    //    {day: '2021-01-20', week: 3}
    //    {day: '2021-01-21', week: 4}
    //    {day: '2021-01-22', week: 5}
    //    {day: '2021-01-23', week: 6}
    //    {day: '2021-01-24', week: 7}
    //  ],
    //  [
    //    {day: '2021-01-25', week: 1}
    //    {day: '2021-01-26', week: 2}
    //    {day: '2021-01-27', week: 3}
    //    {day: '2021-01-28', week: 4}
    //    {day: '2021-01-29', week: 5}
    //    {day: '2021-01-30', week: 6}
    //    {day: '2021-01-31', week: 7}
    //  ],
    //]
};
// 获取 月份 对应的所有日期
function getMonthDay () {
  let now = new Date();
  let current_month_num = mGetDate();
  let current_month = [];
  for (let i = 1; i <= current_month_num; i++) {
    let day = now.setDate(i);
    let everyDay = dateFormat(new Date(day), 'yyyy-MM-dd');
    current_month.push({
      day: everyDay,
      week: new Date(everyDay).getDay() === 0 ? 7 :new Date(everyDay).getDay()
    });
  };
  return current_month;
};
 
// 获取当前月的天数
function mGetDate () {
  var date = new Date();
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var d = new Date(year, month, 0);
  return d.getDate();
};
 
原文地址:https://www.cnblogs.com/Mr-Rshare/p/14511982.html