Node.js中如何根据课程名称获取对象中的对应courseCode
根据课程名称获取对应课程代码的解决方案
先把你的学生数据定义好:
const temp = { "title": "Student Details", "education": "under graduate", "courses": [ { "courseCode": "101", "course": "Physics" }, { "courseCode": "102", "course": "Chemistry" }, { "course": "Math", "courseCode": "103" } ], "studentId": "xyz202267" };
方法一:直接用find()匹配单条数据
这是最直接的方式,遍历课程数组找到第一个匹配名称的对象,再提取对应的courseCode:
function getCourseCode(courseName) { const matchedCourse = temp.courses.find(course => course.course === courseName); // 找到就返回代码,没找到返回null(也可以换成你需要的默认值) return matchedCourse ? matchedCourse.courseCode : null; } // 调用示例 console.log(getCourseCode('Math')); // 输出 '103' console.log(getCourseCode('Physics')); // 输出 '101'
find()会在找到第一个匹配项后停止遍历,适合课程名称唯一的场景。如果有重复课程名,只会返回第一个匹配的结果。
方法二:构建映射对象提升多次查询效率
如果需要频繁根据课程名查代码,先把课程数组转成键值对映射,后续查询直接取值,效率更高:
// 提前构建课程名 -> 课程代码的映射 const courseCodeMap = temp.courses.reduce((map, course) => { map[course.course] = course.courseCode; return map; }, {}); // 直接通过键查询 console.log(courseCodeMap['Math']); // 输出 '103' console.log(courseCodeMap['Chemistry']); // 输出 '102'
这种方式只需要遍历一次数组构建映射,之后每次查询都是O(1)的时间开销,适合多次查询的场景。
内容的提问来源于stack exchange,提问作者Renee
相关产品推荐
相关产品推荐

