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' ]
我的一个朋友正在参加 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' ]