Мой друг посещает курс JavaScript и считает, что код, который он передает для оценки, правильный. Тем не менее, поддержка грейдера продолжает сообщать, что это неверно. Он попросил меня о помощи, и я проверил код в нескольких IDE и редакторах, онлайн и офлайн, и я также каждый раз получал правильную оценку.
Однако я не часто использую JavaScript и я не решаюсь ответить моему другу, что он прав.
Я был бы очень признателен, если бы кто-то с большим опытом мог сказать мне, правильно ли оценивает код или нет. Спасибо.
"Определяет, какой день недели посещало зоомагазин наибольшее количество людей.
Если более одного дня недели имеет один и тот же самый высокий объем трафика, должен быть возвращен массив, содержащий дни (в любом порядке).
(напр. ["среда", "четверг"]).
Если входное значение равно нулю или пустой массив, функция должна вернуть ноль.
@param week - массив объектов Weekday
@ возвратить строку, содержащую название самого популярного дня недели, если есть только один самый популярный день, и массив строк, содержащих названия самых популярных дней, если есть более одного, которые наиболее популярны "
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 должен возвращать массив дней, когда более одного дня имеет самый популярный трафик
Я использовал следующие строки для тестирования, и вывод всегда был последней (прокомментированной) строкой ниже:
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]