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

如何用JavaScript按courseCode过滤嵌套结构的学生JSON数据?

按课程代码过滤学生数据的正确实现

你的问题出在误用了map和some的组合——map会遍历所有学生并修改数据结构,把course字段变成了布尔值,这不是过滤操作。根据不同需求,分两种常见场景给出实现:

场景1:筛选出修读了指定课程的学生(保留学生全部课程信息)

用filter筛选符合条件的学生,结合some判断学生是否修读了目标课程:

const courseCode = "CS301";
// 筛选出所有修读了CS301的学生,保留他们的全部课程
const filteredStudents = students.filter(student => 
  student.course.some(course => course.code === courseCode)
);

场景2:筛选出修读了指定课程的学生,且只保留该学生的目标课程

先筛选出符合条件的学生,再用map修改每个学生的课程列表,只保留匹配的课程:

const courseCode = "CS301";
// 先筛选出修读了CS301的学生,再只保留他们的CS301课程
const filteredStudents = students
  .filter(student => student.course.some(course => course.code === courseCode))
  .map(student => ({
    ...student, // 复制学生原有属性
    course: student.course.filter(course => course.code === courseCode) // 过滤课程列表
  }));

原代码问题说明

你之前的代码用map遍历所有学生,把course字段替换成了some返回的布尔值(仅表示是否存在匹配课程),这会破坏原数据结构,不是过滤学生或课程的正确方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:58