在下面的函数中,一个对象数组被传递给该函数。该对象有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。
你可以简单地减少它:
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}
]));