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

如何从考试提交对象数组计算学生平均成绩并按指定顺序排序?

解决方法

实现思路

  • 先统计每位学生的总成绩与考试次数
  • 按指定的学生顺序(Freddy→Jose→Daniel)计算平均分,生成目标数组

代码实现

const submissions = [
    { name: 'Freddy', grade: 10, date: '20/07/2022' },
    { name: 'Jose', grade: 8, date:'20/07/2022' },
    { name: 'Freddy', grade: 8, date: '25/07/2022' },
    { name: 'Daniel', grade: 5, date: '21/07/2022' },
    { name: 'Jose', grade: 5, date: '22/07/22' }
];

// 1. 统计每位学生的总成绩和考试次数
const gradeStats = submissions.reduce((acc, curr) => {
    if (!acc[curr.name]) {
        acc[curr.name] = { total: 0, count: 0 };
    }
    acc[curr.name].total += curr.grade;
    acc[curr.name].count += 1;
    return acc;
}, {});

// 2. 按指定顺序计算平均分并生成结果数组
const targetOrder = ['Freddy', 'Jose', 'Daniel'];
const averageGrades = targetOrder.map(name => gradeStats[name].total / gradeStats[name].count);

console.log(averageGrades); // 输出结果: [9, 6.5, 5]

代码说明

  • 统计阶段:使用reduce遍历原始数组,为每个学生创建统计对象,累加其总成绩和考试次数。
  • 结果生成阶段:按照要求的固定顺序遍历学生名单,用统计得到的总成绩除以考试次数,直接生成符合Chart.js需求的简单数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:12:31