function Weekday (name, traffic) {
this.name = name;
this.traffic = traffic;
}
function mostPopularDays(week) {
week = [];
week.push(this.name, this.traffic);
if(week.length > 1){
return week;
}else if(week.length === null || week === []){
return null;
}else {
return week[0];
}
}
var mon = new Weekday("Monday", 200);
mostPopularDays(mon);
/ ** *确定一周中哪一天有最多的人访问 * 宠物店。如果一周中超过一天具有相同的,最高的量 *流量,应返回包含日期(以任何顺序)的数组。 *(例如[“星期三”,“星期四”])。如果输入为null或空数组,则为该函数 *应该返回null。 * @param周是一组Weekday对象 * @return一个字符串,其中包含一周中最受欢迎的一天的名称(如果只有一个最受欢迎的一天),以及包含最受欢迎日期名称的字符串数组(如果有多个最受欢迎的日期) * /
我已经认真学习Javascript超过2周了然后我在EDx学习了这门课程,显然,仍然无法解决这类问题。上面的代码是我自己的代码,我知道它的错误(除了工作日功能)。很高兴能得到帮助。谢谢
答案 0 :(得分:0)
mostPopularDays
函数实际上从未使用提供的参数,因为它在第一行被替换。
function mostPopularDays(week) {
week = [];
然后有一个不合时宜的this
,函数mostPopularDays
与WeekDay
没有任何关系,所以你所指的this
实际上是mostPopularDays
函数本身,而不是您提供的WeekDay
。
根据我对描述赋值的文字的理解,mostPopularDays
应该有多个参数,以便过滤掉最受欢迎的参数(" @param周工作日对象数组&# 34。)
所以,你的TODO列表如下:
mostPopularDays
,以表示输入为WeekDay
的数组(我使用weeks
(+ s)或weekList
)< / LI>
mostPopularDays
内将任何内容推送到数组中。this
内的mostPopularDays
没有用,您希望引用所提供的WeekDay
个对象到目前为止,我还不知道您的课程遍及阵列的方式,有几种:
for (var i = 0; i < weekList.length; ++i) { ... }
weekList.forEach(function(week) { ... })
答案 1 :(得分:0)
对于测试,您应该创建对象(天)和对象数组。
然后对对象进行排序并检查是否应该返回一天以上。
如果有超过一天的最高流量,我也提出了一个完整答案的条件。
var mon = new Weekday('Monday', 5);
var tue = new Weekday('Tuesday', 3);
var wed = new Weekday('Wednesday',8);
var thu = new Weekday('Thursday', 5);
var fri = new Weekday('Friday', 14);
var sat = new Weekday('Saturday', 14 );
var sun = new Weekday('Sunday', 0);
var weekDays = [mon, tue, wed, thu, fri, sat, sun];
function mostPopularDays(week) {
week.sort(compare);
var mostPopularDay = [];
var mostPopularDayValue = week[0].traffic;
week.forEach(day => {
if(day.traffic == mostPopularDayValue){
mostPopularDay.push(day.name);
}
});
if(mostPopularDay.length>1){
console.log('The most popular days are: '+ mostPopularDay);
} else{
console.log('The most popular day is '+ mostPopularDay);
}
}
function compare(a,b) {
if (a.traffic < b.traffic)
return 1;
if (a.traffic > b.traffic)
return -1;
return 0;
}
function Weekday (name, traffic) {
this.name = name;
this.traffic = traffic;
}
mostPopularDays(weekDays);
答案 2 :(得分:0)
这很容易,您可以很快理解。
function mostPopularDays(week) {
if(week.length === 0){
return null;
}
var maxArray = [];
var max = '';
for(i=0; i < week.length; i++){
if(week[i].traffic === max){
maxArray.push(week[i].name);
}else if(week[i].traffic > max){
maxArray = [];
maxArray.push(week[i].name);
max = week[i].traffic;
};
}
if(maxArray.length === 1){
return maxArray[0];
} else {
return maxArray;
}
}