通过javascript中的循环向jason数组添加另一个字段

通过javascript中的循环向jason数组添加另一个字段,javascript,arrays,json,Javascript,Arrays,Json,我已经手动添加了计算机标记,但我必须通过循环添加计算机标记字段,以使用给定的JSON数组,该数组是另一个主题,用于将学生姓名与JASON数组匹配,然后将计算机标记字段添加到每个学生JASON文件中 让学生1={ 名称:“马克”, 马克斯:80, 英国马克:75, 科学分数:63分, } 让学生2={ 姓名:“鲍勃”, 马克斯:90, 英国马克:81, 科学分数:88分, } 让学生3={ 姓名:“朱莉娅”, MathMarks:88, 英国马克:87, 科学分数:89分, } 让学生4={ 姓

我已经手动添加了计算机标记,但我必须通过循环添加计算机标记字段,以使用给定的JSON数组,该数组是另一个主题,用于将学生姓名与JASON数组匹配,然后将计算机标记字段添加到每个学生JASON文件中

让学生1={
名称:“马克”,
马克斯:80,
英国马克:75,
科学分数:63分,
}
让学生2={
姓名:“鲍勃”,
马克斯:90,
英国马克:81,
科学分数:88分,
}
让学生3={
姓名:“朱莉娅”,
MathMarks:88,
英国马克:87,
科学分数:89分,
}
让学生4={
姓名:“安东尼”,
马克斯:60,
英国马克:64,
科学分数:61,
}
让我们换一个话题=[
{名称:'Mark',计算机标记:90},
{姓名:'Anthony',计算机标记:70},
{姓名:'Julia',计算机标记:88},
{姓名:'Bob',计算机标记:81}]
StudentsArray=[Student1,Student2,Student3,Student4]
让学生打分={
学生:学生,雷
}
学生1.计算机标记=90
学生2.计算机标记=81
学生3.计算机标记=88
学生4.计算机标记=70
console.log(StudentMarks.students)
一种可能的方法

const
学生1={Name:'Mark',MathMarks:80,EnglishMarks:75,ScienceMarks:63}
,学生2={姓名:'Bob',数学成绩:90分,英语成绩:81分,科学成绩:88分}
,学生3={姓名:'Julia',数学成绩:88,英语成绩:87,科学成绩:89}
,学生4={姓名:'Anthony',数学成绩:60,英语成绩:64,科学成绩:61}
,StudentsList=[Student1,Student2,Student3,Student4]
,另一主题=
[{Name:'Mark',ComputersMarks:90}
,{姓名:'Anthony',计算机标记:70}
,{姓名:'Julia',计算机标记:88}
,{姓名:'Bob',计算机标记:81}
]
函数addNewProp(列表,newRefs)
{
let[key,prop]=Object.key(newRefs[0])
List.forEach(el=>
{
让newP=newRefs.find(x=>x[key]==el[key])
如果(newP)el[prop]=newP[prop]
});
}
添加新道具(学生名单,另一科目)
log('Student1->',JSON.stringify(Student1))
log('Student2->',JSON.stringify(Student2))
log('Student3->',JSON.stringify(Student3))
console.log('Student4->',JSON.stringify(Student4))

.as console wrapper{max height:100%!important;top:0}
一个简单的方法是使用reduce和map的强大功能

Reduce
基本上是从数组中生成一个对象,然后
Map
变换数组中的每个项并返回新数组

此外,我们使用spear语法
来操作对象

// Here we are converting [{name: '', marks: 1 }] into { name: marks }
const AnotherSubjectsMap = AnotherSubject.reduce((accu, curr) => ({ 
    ...accu,
    [curr.name]: curr.ComputersMarks
}), {});

let StudentsArray = [Student1, Student2, Student3, Student4]

// Here were are going through the array and adding an extra parameter
StudentsArray = StudentsArray.map(Student => ({ 
    ...Student, // This line means we are copying all keys of Student as it is
    ComputersMarks: AnotherSubjectsMap[Student.Name]
}));

let StudentMarks = {
    students: StudentsArray
}

console.log(StudentMarks.students)
让学生1={
名称:“马克”,
马克斯:80,
英国马克:75,
科学分数:63分,
}
让学生2={
姓名:“鲍勃”,
马克斯:90,
英国马克:81,
科学分数:88分,
}
让学生3={
姓名:“朱莉娅”,
MathMarks:88,
英国马克:87,
科学分数:89分,
}
让学生4={
姓名:“安东尼”,
马克斯:60,
英国马克:64,
科学分数:61,
}
让另一个主题=[{
姓名:'马克',
计算机标记:90
},
{
姓名:'安东尼',
计算机标记:70
},
{
姓名:'朱莉娅',
计算机标记:88
},
{
姓名:'鲍勃',
计算机标记:81
}
]
另一个主题映射=另一个主题。减少((累计,当前)=>({
…accu,
[当前名称]:当前计算机标记
}), {});
StudentsArray=[Student1,Student2,Student3,Student4]
StudentsArray=StudentsArray.map(Student=>({
……学生,
计算机标记:另一个科目映射[学生姓名]
}));
让学生分数={
学生:学生,雷
}

console.log(StudentMarks.students)
JSON不是javascript对象,它只是从Java脚本对象结构中获得灵感的字符串表示法这是否回答了您的问题
JSON.stringify(StudentMarks.students)
将输出JSON@MisterJojo更新了代码和代码片段。我试着去读
curr.Name
它应该在哪里
curr.Name
。魔鬼在细节中。那么我的答案行得通吗;就像我的。。。