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

学生数组分组函数问题:如何正确添加剩余学生说明字符串

问题修正方案

核心问题分析

你的代码存在两个关键问题:

  • 剩余学生时,会同时添加剩余学生的子数组和Rest students字符串,不符合要求的格式;
  • 无剩余学生时,未添加Rest students: -的收尾项。

修正后的代码

const students = [
  "Peter",
  "Andrew",
  "Ann",
  "Mark",
  "Josh",
  "Sandra",
  "Cris",
  "Bernard",
  "Takesi",
  "Sandra",
];

function sortStudentsByGroups(arr) {
  // 先对学生数组按字典序排序,用扩展运算符避免修改原数组
  const sortedArr = [...arr].sort();
  const arrNew = [];
  const groupSize = 3;
  
  // 计算完整3人组的数量
  const fullGroupCount = Math.floor(sortedArr.length / groupSize);
  
  // 添加所有完整分组
  for (let i = 0; i < fullGroupCount; i++) {
    const start = i * groupSize;
    arrNew.push(sortedArr.slice(start, start + groupSize));
  }
  
  // 处理剩余学生
  const remaining = sortedArr.slice(fullGroupCount * groupSize);
  if (remaining.length > 0) {
    arrNew.push(`Rest students: ${remaining.join(', ')}`);
  } else {
    arrNew.push('Rest students: -');
  }
  
  console.log(arrNew);
  return arrNew;
}

sortStudentsByGroups(students);

关键修正点

  1. 分离完整分组与剩余学生:先批量添加所有3人完整组,再单独处理剩余学生,避免同时插入剩余子数组和结果字符串;
  2. 补全无剩余场景的收尾项:当学生总数刚好是3的倍数时,主动添加Rest students: -;
  3. 保护原数组:通过扩展运算符创建原数组副本再排序,避免修改外部传入的原始数据。

测试验证

  • 示例10名学生:生成3个3人组,最后一项为Rest students: Takesi;
  • 若删除1名学生(共9人):生成3个3人组,最后一项为Rest students: -。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:06:24