mostPopularDays函数确定一周中的哪一天访问宠物商店的人数最多。 如果将两天或更多天捆绑在一起以获取最大流量,则应返回一个包含这些天的数组。 如果输入为null或为空数组,则函数应返回null。 输入是Weekday对象的数组。 如果只有一天中最流行的一天,则此函数应返回一个字符串,其中包含一周中最流行的一天的名称, 一个数组,其中包含最流行的日子的名称(如果存在多个不流行的日子)。
function Weekday (name, traffic) {
this.name = name;
this.traffic = traffic;}
function mostPopularDays(week) {
var sat = new Weekday('Saturday', 33);
var sun = new Weekday('Sunday', 23);
var mon = new Weekday('Monday', 8);
var tue = new Weekday('Tuesday', 15);
var wed = new Weekday('Wednesday', 5);
var thu = new Weekday('Thursday', 18);
var fri = new Weekday('Friday', 29);
week = [sat , sun , mon , tue , wed , thu , fri];
for (var i = 0 ; i <= length-1 ; i++){
if(week[i].traffic > week[i+1].traffic)
return week[i].name;}}
我编写了此函数,但它不起作用。我是Java语言新手。
答案 0 :(得分:0)
首先,尝试使您的函数更通用,以便它可以在传入的任何天数数组中使用。解决此问题的一种方法是通过降序sort天数并返回第一个元素(或元素,如果有多天的流量相同)。
var sat = new Weekday('Saturday', 33);
var sun = new Weekday('Sunday', 23);
var mon = new Weekday('Monday', 8);
var tue = new Weekday('Tuesday', 33);
var wed = new Weekday('Wednesday', 5);
var thu = new Weekday('Thursday', 18);
var fri = new Weekday('Friday', 29);
var week = [sat , sun , mon , tue , wed , thu , fri];
function mostPopularDays(week) {
week.sort((a, b) => b.traffic - a.traffic); // sort by descending order
return week
.filter(day => day.traffic === week[0].traffic)
.map(day => day.name);
}
console.log(mostPopularDays(week)); // [Saturday, Tuesday]
对于您的尝试,您的for
循环存在一些问题:
length
未定义(您可能是说week.length
)i
的某天的流量比下一个索引的那一天多,您将立即返回。考虑这种方法的正确性(i
也可以超越数组,这是不希望的)。您希望至少查看阵列中的所有日期,并以某种方式确定哪一个流量最多。