ค้นหาออบเจกต์ในอาร์เรย์ตาม subjectName แล้วดึง marks
วนลูปหา object ที่ subjectName ตรงกับที่ต้องการ แล้วคืนค่า marks
ตัวอย่างโค้ด
function getMarksUsingSubjectName(actualJSONData, givenSubjectName) {
for (var tempObj of actualJSONData) {
// ⚠️ Bug ในโค้ดต้นฉบับ: ใช้ = (assignment) แทน ==/===
if (tempObj.subjectName === givenSubjectName) {
return tempObj.marks;
}
}
return null; // ไม่เจอ
}
function studentDetails() {
return JSON.stringify([
{ firstName: "John", subjectName: "JavaScript", marks: 97 },
{ firstName: "David", subjectName: "Java", marks: 98 }
]);
}
var actualJSONData = JSON.parse(studentDetails());
var studentMarks = getMarksUsingSubjectName(actualJSONData, "JavaScript");
console.log("The student marks = " + studentMarks); // 97
วิธีรัน
node fileName.js
ผลลัพธ์
The student marks = 97
⚠️ ข้อผิดพลาดสำคัญในโค้ดต้นฉบับ
if (tempObj.subjectName = givenSubjectName) ใช้ Assignment (=) แทน Comparison (===)
จะทำให้ tempObj.subjectName ถูกเขียนทับ และเงื่อนไขเป็น true เสมอ (ถ้าค่าไม่ใช่ falsy)
วิธีทันสมัย: ใช้ find()
const studentDetails = [
{ firstName: "John", subjectName: "JavaScript", marks: 97 },
{ firstName: "David", subjectName: "Java", marks: 98 }
];
const getMarks = (subjectName) =>
studentDetails.find(s => s.subjectName === subjectName)?.marks;
console.log(getMarks("JavaScript")); // 97
console.log(getMarks("Python")); // undefined