You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写判断某月是否存在13号星期五的JavaScript函数?

如何实现检测13号是否为星期五的函数monthHasFriday13th

问题背景

我是编程新手,能处理CSS和HTML内容,但对JavaScript逻辑难以理解,这是我首个涉及布尔值(true/false)的编程任务,目前不知如何完成。任务要求:使用getFullMonth()获取日期列表,无需关注月份编号,检测列表中13号是否为星期五,根据结果返回true或false,函数命名为monthHasFriday13th。

我已编写好getNextWeekday和getFullMonth函数,但无法完成monthHasFriday13th函数,尝试参考getFullMonth却毫无头绪,现有错误尝试代码如下:

fundction monthHasFriday13th(day1weekday){let if ( getFullMonth (monthNum,day1Weekday) = (,13) )
if (getFullMonth (monthNum,day1Weekday) == 13 ){ nameFound = true; return ()  }}

我的完整现有JavaScript代码如下:

const weekdays = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];

const months = [
    { name: "January", days: 31 },
    { name: "February", days: 28 },
    { name: "March", days: 31 },
    { name: "April", days: 30 },
    { name: "May", days: 31 },
    { name: "June", days: 30 },
    { name: "July", days: 31 },
    { name: "August", days: 31 },
    { name: "September", days: 30 },
    { name: "October", days: 31 },
    { name: "November", days: 30 },
    { name: "December", days: 31 }
];

//Get Next Weekday!
function getNextWeekday(day) {
    let i = 0;
    while (i < weekdays.length) {
        if (day === weekdays[i]) {
            if (i == weekdays.length - 1) {
                return weekdays[0];
            } else {
                return weekdays[i + 1];
            }
        }
        i = i + 1;
    }
}
console.log("The next weekday is " + weekdays + "!")

//Get Full month!
function getFullMonth(monthNum,day1Weekday) {
    if (monthNum < 1 || monthNum > 12) {
        return null;
    }
    if (weekdays.indexOf(day1Weekday) === -1 ) {
        return null;
    }
    let outcome = [];
    monthNum = monthNum - 1;
    let currentDay = day1Weekday;
    for (let i = 0 ; i < months[monthNum].days ; i = i + 1 ) {
        let nextDay = {
            dayNum: i + 1,
            dayName: currentDay
        };
        outcome.push(nextDay);
        currentDay = getNextWeekday(currentDay);
    }
    return outcome;
}

//Get Fridays 13th!
function monthHasFriday13th(????????){
?????????????!???
}

解决方案

完整函数实现

function monthHasFriday13th(monthNum, day1Weekday) {
    // 调用getFullMonth获取目标月份的日期列表
    const monthDays = getFullMonth(monthNum, day1Weekday);
    // 如果参数非法(比如月份不在1-12,或周几名称错误),直接返回false
    if (!monthDays) return false;
    
    // 遍历日期数组,找到13号的记录
    for (let day of monthDays) {
        if (day.dayNum === 13) {
            // 直接返回13号是否为星期五的判断结果(布尔值)
            return day.dayName === "Friday";
        }
    }
    // 兜底处理(实际所有月份都有13号,仅作防御性判断)
    return false;
}

代码说明

  1. 参数匹配:函数接收monthNum(1-12的月份编号)和day1Weekday(当月1号的星期名称),和getFullMonth的参数保持一致,才能正确调用获取日期列表。
  2. 非法参数处理:如果getFullMonth返回null(参数不合法),直接返回false避免后续报错。
  3. 查找13号:用for...of遍历日期数组,定位到dayNum为13的对象。
  4. 判断并返回结果:直接判断该对象的dayName是否等于"Friday",这个判断本身就是布尔值,可直接返回。

你之前错误尝试的问题点

  • 函数名拼写错误:fundction应为function
  • 语法错误:let if属于无效写法,不能在变量声明后直接跟条件判断
  • 逻辑错误:直接将getFullMonth返回的对象数组和数字13比较,完全不符合该函数的返回值类型

内容的提问来源于stack exchange,提问作者Merileopardi Saksassa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:15:45