JS基础题,要求基础做法,计算题

利用流程控制分枝语句或者用for循环做出来一道题。题目:给出月份和日期,算出是当年的第几天。一定要基础做法

你参考 一下 。其实从算出 平年和闰年 的时候就 可以 用 if判断 用 if else或者switch都行 。这样会好理解且麻烦 需要 12个分支语句 。
我是直接 乘出来的 你可以


  let day = countYearDay(12, 31);
  console.log(day)
  function countYearDay(month, date) {
    let big = [1, 3, 5, 7, 8, 10, 12];
    let small = [4, 6, 9, 10];


    //获取年份 判断 平闰 年
    var day = new Date();
    var year = day.getFullYear(); //获取完整的年份(4位)
    // var year = 2000; //获取完整的年份(4位)
    var isyear = 0;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //闰年
      isyear = 29;
    } else {
      isyear = 28; //平年
    }

    //合法值校验
    if (month > 12 || month == 0) {
      console.log("你输入的月份不合法")
    }

    if (month == 2 && (date != 28 && date != 29)) {
      console.log("你输入的日期不合法")
      return
    } else if (date > 31 || date == 0) {
      console.log("你输入的日期不合法")
      return
    }


    let b = [];
    let s = [];
    //根据 月份 确认 大小月 并计算 第几天
    console.log(b, s)
    big.map((item, index) => {
      if (item < month) {
        b.push(item);
      }
    })

    small.map((item, index) => {
      if (item < month) {
        s.push(item);
      }
    })
    console.log(b, s)

    if (month == 2) { //2月特殊处理
      return 31 + date;
    }
    if (b.length == 0 && s.length == 0) { //一月的话 就直接输出
      return date;
    } else {
      console.log(b.length * 31, s.length * 30, isyear, date)
      return (b.length * 31) + (s.length * 30) + isyear + date;
    }
  }

这个是简化版本 你把后面的月份补全就行

function countYearDay(month, date) {
    let big = [1, 3, 5, 7, 8, 10, 12];
    let small = [4, 6, 9, 10];


    //获取年份 判断 平闰 年
    var day = new Date();
    var year = day.getFullYear(); //获取完整的年份(4位)
    // var year = 2000; //获取完整的年份(4位)
    var isyear = 0;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //闰年
      isyear = 29;
    } else {
      isyear = 28; //平年
    }

    //合法值校验
    if (month > 12 || month == 0) {
      console.log("你输入的月份不合法")
    }

    if (month == 2 && (date != 28 && date != 29)) {
      console.log("你输入的日期不合法")
      return
    } else if (date > 31 || date == 0) {
      console.log("你输入的日期不合法")
      return
    } date

    if (month == 1) {
      return date
    } else if (month == 2) {
      return 31 + date; //也就是 1月31 + 当天
    } else if (month == 3) {
      return 31 + isyear + date; //也就是 1月 31 天+ 2月 +3月的天数 
    }
  }

你这题目什么意思每太懂

大小月区别开,特殊月份区别开(根据输入年份判断平闰年)

  const date = [2021, 9, 29]//年 月 日
  function count(date) {
    const year = date[0], month = date[1], day = date[2]
    let result = 0
    new Array(month).fill('').map((cur, index) => {
      index + 1 === 2 ?
        //2月判断润年
        (year % 4 === 0 ? result += 29 : result += 28)
        ://非2月小等于7月的奇数31偶数30
        index + 1 <= 7 ? ((index + 1) % 2 === 0 ? result += 30 : result += 31)
          ://反之
          ((index + 1) % 2 === 0 ? result += 31 : result += 30)
    })
    console.log('今年的第几天:' + result)
  }
  count(date)