You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何获取average函数返回结果的前5个最大值

实现提取前5个最大平均值的方案

没问题,咱们一步步改造代码,实现提取前5个最大平均值的功能,逻辑很清晰:

第一步:收集跑步者与对应平均值的关联数据

不能只打印平均值,得把每个跑步者和他的平均值绑定起来存好——这样排序后还能知道对应是谁的成绩,用map方法就能简洁完成这个操作。

第二步:按平均值降序排序

把收集到的数据按平均值从大到小排序,用比较函数指定降序规则就行。

第三步:提取前5个最大值

用slice方法截取排序后的前5项,如果跑步者总数不足5个,它会自动返回所有现有数据,不用额外处理边界情况。

完整修改后的代码

Person.prototype.average = function(){ 
  var plus=0; 
  for (var i = 0; i < this.kilometers.length; i++) { 
    plus += this.kilometers[i]; 
  } 
  var total= plus/this.kilometers.length; 
  return total; 
}; 

function myFunction(runners) { 
  // 1. 收集每个跑步者及其对应的平均值
  var runnerWithAvg = runners.map(runner => ({
    person: runner,
    average: runner.average()
  }));

  // 2. 按平均值从大到小排序
  runnerWithAvg.sort((a, b) => b.average - a.average);

  // 3. 提取前5个最大值对应的跑步者数据
  var top5Runners = runnerWithAvg.slice(0, 5);

  // 示例:打印前5名的信息,也可以直接返回结果数组
  top5Runners.forEach((item, index) => {
    console.log(`第${index+1}名:${item.person.name},平均公里数:${item.average.toFixed(2)}`);
  });

  // 如果只需要前5个平均值的数组,可改为:
  // var top5Avgs = top5Runners.map(item => item.average);
  // return top5Avgs;
} 

// 补充你代码里未完整定义的Person构造函数
function Person(name, gender, age, kilometers) {
  this.name = name;
  this.gender = gender;
  this.age = age;
  this.kilometers = kilometers;
}

// 示例数据
var runners = [
  new Person('Alex', 'male', '25', [4, 3, 3, 3]),
  new Person('Bob', 'male', '30', [5, 5, 4, 6]),
  new Person('Cindy', 'female', '28', [3, 4, 4, 5]),
  new Person('Dave', 'male', '22', [6, 6, 7, 5]),
  new Person('Eve', 'female', '26', [4, 5, 5, 4]),
  new Person('Frank', 'male', '32', [3, 3, 4, 3])
];

myFunction(runners);

代码细节说明

  • map方法遍历所有跑步者,生成包含跑步者对象和对应平均值的新数组,方便后续关联数据;
  • sort((a,b) => b.average - a.average)是降序排序的核心,要是需要升序,改成a.average - b.average就行;
  • slice(0,5)安全截取前5项,哪怕数组长度不足5也不会报错;
  • toFixed(2)是让平均值保留两位小数,看起来更规整,不需要的话直接删掉就行。

内容的提问来源于stack exchange,提问作者Alex Dis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:55:41