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

如何关联两个JSON数组数据:根据教师_id返回对应课程信息

关联教师与课程数据,返回教师详情及对应课程

我有两个JSON数据模块,分别存储课程(Courses)和教师(instructor)信息,二者通过_id字段关联。需求是:返回教师详情时,同时附带该教师的所有课程信息。

示例数据

教师数据(instructor.js)

let instructorData = [
  {
    _id: 1,
    name: "superman",
    courses: [1,3],
  },{
    _id: 2,
    name: "batman",
    courses: [2],
  }
];

module.exports = {
    instructorData: instructorData,
  };

课程数据(courses.js)

let coursesData = [
  {
    _id: 1,
    name: "DC",
    instructor: {
                _id:1
                 },
  },{
    _id: 2,
    name: "Marvel",
    instructor: {
                _id:2
                 },
  },{
    _id: 3,
    name: "DC vs Marvel",
    instructor: {
                _id:1
                 },
  },
];

module.exports = {
    coursesData: coursesData,
  };

问题

以_id为1的教师为例,该教师拥有2门课程,如何遍历获取这些课程并返回如下格式的结果?

{ 
  name: "superman",
  courses: [{name: "DC"},{name: "DC vs Marvel"}] 
} 

解决方案

可以通过JavaScript的数组方法快速实现数据关联和格式转换:

  1. 先导入两个数据模块:
const { instructorData } = require('./instructor.js');
const { coursesData } = require('./courses.js');
  1. 编写处理函数:
function getInstructorWithCourses(instructorId) {
  // 定位目标教师
  const targetInstructor = instructorData.find(inst => inst._id === instructorId);
  if (!targetInstructor) return null;

  // 筛选并格式化该教师的课程
  const formattedCourses = coursesData
    .filter(course => course.instructor._id === instructorId)
    .map(course => ({ name: course.name }));

  // 返回指定结构的结果
  return {
    name: targetInstructor.name,
    courses: formattedCourses
  };
}

// 测试获取_id为1的教师数据
console.log(getInstructorWithCourses(1));

逻辑说明

  • 使用find方法从教师数组中匹配目标ID的教师对象;
  • 用filter筛选出课程数组中归属该教师的所有课程,再通过map将课程数据转换为仅包含name字段的对象;
  • 最后将教师名称和处理后的课程数组组合成需求格式返回。

执行上述代码后,就能得到期望的结果。

内容的提问来源于stack exchange,提问作者Manas S. Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:45:31