Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เข้าถึง Nested JSON Property ตามค่า Property อื่นใน JavaScript

ค้นหาออบเจกต์ในอาร์เรย์ตาม 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