ใช้ 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 }
]