该函数打印具有最高流量(week.traffic)的星期几(week.name)。你能给我一个替代逻辑吗?

问题描述 投票:-4回答:1

在下面的函数中,一个对象数组被传递给该函数。该对象有2个属性:名称和流量。我正在写一周中控制台流量最高的那些日子。

function mostPopularDays(week) {

  var Days = [];

  if (week == null || week.length == 0) {
    return null;
  }

  var max = week[0].traffic;

  var j;
  var k[];

  for (i = 1; i < week.length; i++) {
    if (week[i].traffic > max) {
      max = week[i].traffic;
      j = i;
    } else if (week[i].traffic == max) {
      j = i;
      k.push(i);

    }

  }
  if (j != k[k.length - 1]) {
    Days.push(week[j].name)
    console.log(Days[0]);
  } else {

    for (i = 0; i < k.length; k++) {
      Days.push(week[(k[i])].name);
      cosole.log(Days[i]);
    }
    Days[k.length] = week[j].name;
    console.log(Days[k.length]);

  }
}

传递给函数的参数是一个对象数组。我正在比较基于objects.traffic的值并打印那些流量最高的object.names。

javascript
1个回答
1
投票

你可以简单地减少它:

 const mostPopularWeekDays = week => {
   let max = 0; //a helper variable to store the current maximum
   return week.reduce((res, {name, traffic}) => {
     if(traffic > max){ //looks like our maximum gets toped
       max = traffic; //so set that new maximum
       return [name]; //and keep on going with today
     }
     if(traffic === max) res.push(name); //we dont have a new maximum but its high enough to count as a maxum so add it
     return res;
  }, []);
 }

 console.log(mostPopularWeekDays([
   {name:"Mo", traffic:10},
   {name:"Tu", traffic:15},
   {name:"We", traffic:10},
   {name:"Th", traffic:10},
   {name:"Fr", traffic:10},
   {name:"St", traffic:15},
   {name:"Su", traffic:10}
]));
© www.soinside.com 2019 - 2024. All rights reserved.