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

如何通过JavaScript循环匹配姓名为JSON数组学生对象添加ComputersMarks字段

实现自动匹配添加ComputersMarks字段的方案

直接替换你代码里手动赋值的4行代码即可,下面提供两种实现方式:

方式1:映射表匹配(推荐,时间复杂度更低)

先把AnotherSubject转换为以学生姓名为键的查找表,再遍历学生数组统一赋值,代码如下:

// 先构建成绩查找映射
const marksMap = {}
AnotherSubject.forEach(item => {
  marksMap[item.name] = item.ComputersMarks
})
// 遍历学生数组添加字段
StudentsArray.forEach(student => {
  student.ComputersMarks = marksMap[student.Name]
})

替换掉原来的4行手动赋值代码即可,最终完整运行代码如下:

let Student1={
    Name:"Mark",
    MathMarks:80,
    EnglishMarks:75,
    ScienceMarks:63,
 }

let Student2={
    Name:"Bob",
    MathMarks:90,
    EnglishMarks:81,
    ScienceMarks:88,
 }

let Student3={
    Name:"Julia",
    MathMarks:88,
    EnglishMarks:87,
    ScienceMarks:89,
 }

let Student4={
    Name:"Anthony",
    MathMarks:60,
    EnglishMarks:64,
    ScienceMarks:61,
 }

let AnotherSubject=[
 {name:'Mark', ComputersMarks:90},
 {name:'Anthony', ComputersMarks:70},
 {name:'Julia', ComputersMarks:88},
 {name:'Bob', ComputersMarks:81}]

StudentsArray=[Student1,Student2,Student3,Student4]

let StudentMarks={
    students:StudentsArray
}

// 替换手动赋值的代码
const marksMap = {}
AnotherSubject.forEach(item => {
  marksMap[item.name] = item.ComputersMarks
})
StudentsArray.forEach(student => {
  student.ComputersMarks = marksMap[student.Name]
})

console.log(StudentMarks.students)

方式2:双层循环匹配(适合小数据量场景)

如果不想额外生成映射表,也可以直接双层循环匹配姓名:

StudentsArray.forEach(student => {
  const matchItem = AnotherSubject.find(item => item.name === student.Name)
  if (matchItem) {
    student.ComputersMarks = matchItem.ComputersMarks
  }
})

两种方式运行后输出的结果和你原来手动赋值的结果完全一致,后续如果新增学生或者新增成绩数据,不需要再手动修改赋值代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:24:02