首页 > 解决方案 > 获取函数以从数组中返回具有最高值的“新”对象

问题描述

第一次在这里发布海报和 JavaScript 初学者。我正在尝试获取一个函数来返回具有更高traffic值的对象。我在网上搜索如何返回最大值,所以我现在对 Math.max 了如指掌,但我仍然无法使其按预期工作。这是我的代码示例:

function mostBusyDays(week) {
  var week = [
    new Weekday("Monday", 11),
    new Weekday("Tuesday", 14),
    new Weekday("Wenesday", 19),
    new Weekday("Thursday", 21),
    new Weekday("Friday", 24),
    new Weekday("Saturday", 29),
    new Weekday("Sunday", 6),
  ];
  return week;
}

这就是我要实现的功能,这是创建new对象的原型weekday

function Weekday(name, traffic) {
  this.name = name;
  this.traffic = traffic;
}

如图所示,在控制台上调用该函数return week确实会按预期返回一个数组,所以我至少知道代码正在运行,但对于我的生活,我只是无法让它只返回流量最高的工作日。我会很感激你给我的任何启示

标签: javascriptarrays

解决方案


您可以尝试使用 Array.reduce 函数:

function mostBusyDays() {
  var week = [
    new Weekday("Monday", 11),
    new Weekday("Tuesday", 14),
    new Weekday("Wenesday", 19),
    new Weekday("Thursday", 21),
    new Weekday("Friday", 24),
    new Weekday("Saturday", 29),
    new Weekday("Sunday", 6),
  ];

  return week.reduce((a,b)=>a.traffic>b.traffic?a:b);
}

function Weekday(name, traffic) {
  this.name = name;
  this.traffic = traffic;
}

console.log(mostBusyDays());

参见Array.prototype.reduce


推荐阅读