例如,我有两个数组"StudentInfo">
[
{
"id": "1234",
"name": "A"
},
{
"id": "1134",
"name": "B"
},
{
"id": "2234",
"name": "C"
},
{
"id": "3234",
"name": "D"
}
]
和"好学生名单">
[
"1234",
"1134"
]
那么我怎样才能在 StudentInfo 中添加一个关于学生类型的属性取决于 GoodStudentList,如果他们的 ID 在好列表中,那么他们的类型是好的,否则他们的类型是正常的:
[
{
"id": "1234",
"name": "A",
"type": "Good"
},
{
"id": "1134",
"name": "B"
"type": "Good"
},
{
"id": "2234",
"name": "C"
"type": "Normal"
},
{
"id": "3234",
"name": "D",
"type": "Normal"
}
]
抱歉,我知道这可能很容易,但我真的无法理解 JS qwq 中的映射内容
您可以使用forEach()
遍历学生数组,并使用includes()
测试每个 id 是否在良好列表中。然后,在遍历学生时根据结果添加正确的属性:
let StudentInfo = [{"id": "1234","name": "A"},{"id": "1134","name": "B"},{"id": "2234","name": "C"},{"id": "3234","name": "D"} ]
let GoodStudentList = ["1234","1134"]
StudentInfo.forEach(student => {
student.type = GoodStudentList.includes(student.id) ? "Good" : "Normal"
})
console.log(StudentInfo)
您可以在 StudentInfo
数组上使用 map 方法,对于每个元素,检查该对象的 id 是否存在于GoodStudentList
中。它可能看起来像这样:
StudentInfo = StudentInfo.map((student) => {
if (GoodStudentList.indexOf(student.id) >= 0) {
student.type = 'Good';
} else {
student.type = 'Normal';
}
})
在这里,您正在检查每个学生的学生 ID 索引是否大于 0(意味着它存在于数组中(。如果数组中不存在,它将返回 -1,因此不传递条件。返回的是 StudentInfo 数组,所有学生都修改为现在包含 type 属性。
使用普通的旧迭代:
let list = [
{
"id": "1234",
"name": "A"
},
{
"id": "1134",
"name": "B"
},
{
"id": "2234",
"name": "C"
},
{
"id": "3234",
"name": "D"
}
];
let good = [
"1234",
"1134"
];
for (let key in list){
for (let i of good){
if (i === list[key].id){
list[key].type = "Good";
break;
}
else list[key].type = "Neutral";
}
}
console.log(list);