使用 JS 原型确定一周中哪一天访问商店的人数最多

Determines which day of the week had the most number of people visiting the store with JS prototype

mostPopularDays 函数确定一周中的哪一天访问宠物店的人数最多。 如果两天或更多天的流量最高,则应 return 编辑一个包含这些天数的数组。 如果输入为 null 或空数组,则函数应 return null。 输入是一个工作日对象数组。 如果只有一个最流行的日子,这个函数应该 return 一个包含一周中最流行的一天的名称的字符串, 和一个数组,其中包含最流行的日子的名称(如果有多个最流行的日子)。

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;}}

我写了这个函数,但是不行。我是 Javascript.

的新人

首先,尝试使您的函数更通用,以便它适用于传入的任何天数数组。解决此问题的一种方法是 sort 天数按降序排列 return 第一个元素(如果有多天具有相同的最高流量,则为多个元素)。

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 的某一天比下一个索引的那一天的流量多,您会立即 return。想想这种做法的正确性(i也可以超越数组,这是不可取的)。您至少要查看数组中的所有日期,并以某种方式确定哪一天的流量最大。