Javascript 继承 - 询问专家对以下代码的意见

Javascript inheritance - asking experts oppinion on the following code

我的一个朋友正在参加 JavaScript 课程,他认为他提交的用于评分的代码是正确的。但是,评分者支持一直报告它不正确。他寻求我的帮助,我在几个 IDE 和编辑器上在线和离线测试了代码,并且每次都得到了正确的评估。 但是我不经常使用 JavaScript ans 我犹豫要不要回答我的朋友他是对的。 如果有更多经验的人能告诉我代码评估是否正确,我将不胜感激。谢谢。

“确定一周中哪一天访问宠物店的人数最多。
如果一周中不止一天具有相同的最高流量,则应 returned.
包含这些天的数组(以任何顺序排列) (例如 ["Wednesday"、"Thursday"])。
如果输入为 null 或空数组,则函数应 return null.
@param week 一组工作日对象
@return 如果只有一个最流行的日子,则为包含一周中最流行的一天的名称的字符串,如果有多个,则为包含最流行的日子名称的字符串数组最受欢迎

function Weekday (name, traffic) {
    this.name = name;
    this.traffic = traffic;
}

function mostPopularDays(week) {
    // IMPLEMENT THIS FUNCTION!
    this.week = week;
    if (typeof week !== 'object' || week === null || week === undefined || week.length === 0) {
        return null;
    }

    var maxTr = 0;
    var maxTrDay = [];
    for (var i = 0; i < this.week.length; i++) {
        if (this.week[i].traffic > maxTr) {
            maxTrDay = [this.week[i].name];
            //maxTrDay = this.week[i].name;
            maxTr = this.week[i].traffic;
        } else if (this.week[i].traffic === maxTr) {
            //maxTrDay = [this.week[i].name];
            maxTrDay.push(this.week[i].name);
        } else if (this.week.length > 7) {
            this.week.shift();
        }
    }
    if (maxTrDay.length === 1) {
        console.log("The most popular day of the week was:")
        return maxTrDay[0];
    } else if (maxTrDay > 1) {
        console.log("The most popular days of the week were:")
        return maxTrDay;
    }
    return null;
}

评分者报告失败的测试用例如下:
1. mostPopularDays 应该return 一个多于一天拥有最热门流量的日子的数组

我使用以下几行进行测试,输出始终是下面的最后一行(注释):

var week = [];
var sun = new Weekday('Sunday', 100); week.push(sun);
var mon = new Weekday('Monday', 90); week.push(mon);
var tue = new Weekday('Tuesday', 100); week.push(tue);
mostPopularDays(week);
// [Sunday, Tuesday]

问题是 (maxTrDay > 1) 正在将数组对象与数字 1 进行比较。这对于所有数组输入都是错误的,除了令人困惑的,例如([2] > 1),但 that's JS for you

运行 您的代码与提供的驱动程序一样(在 Tuesday 中添加引号以避免 ReferenceError)产生 null 的输出。

你的朋友可能指的是 (maxTrDay.length > 1),它根据长度进行比较并产生正确的输出:

The most popular days of the week were:
=> [ 'Sunday', 'Tuesday' ]