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

หา Object ที่มีค่ามากที่สุดจาก 2 อาเรย์โดยไม่ต้อง Concat ใน JavaScript

ใช้ reduce() บนแต่ละอาเรย์แยกกัน เก็บค่าที่มากกว่าตาม Key

ตัวอย่างโค้ด

var sectionAStudentDetails = [
    {studentName: 'John', studentMarks: 78},
    {studentName: 'David', studentMarks: 65},
    {studentName: 'Bob', studentMarks: 98}
];

let sectionBStudentDetails = [
    {studentName: 'John', studentMarks: 67},
    {studentName: 'David', studentMarks: 89},
    {studentName: 'Bob', studentMarks: 97}
];

function mergeByMaxMarks(arrayValues, k) {
    const previousValue = arrayValues[k.studentName];
    if (!previousValue || k.studentMarks >= previousValue.studentMarks) {
        arrayValues[k.studentName] = k;
    }
    return arrayValues;
}

const sectionA = sectionAStudentDetails.reduce(mergeByMaxMarks, {});
const sectionB = sectionBStudentDetails.reduce(mergeByMaxMarks, sectionA);

console.log(Object.values(sectionB));

วิธีรันโปรแกรม

ใช้คำสั่ง node fileName.js (เช่น node demo84.js)

ผลลัพธ์

[
  { studentName: 'John', studentMarks: 78 },
  { studentName: 'David', studentMarks: 89 },
  { studentName: 'Bob', studentMarks: 98 }
]