Dùng reduce() trên từng mảng riêng biệt, so sánh theo key (studentName) và giữ object có giá trị (marks) lớn hơn.
Ví dụ
var sectionA = [
{studentName: 'John', studentMarks: 78},
{studentName: 'David', studentMarks: 65},
{studentName: 'Bob', studentMarks: 98}
];
let sectionB = [
{studentName: 'John', studentMarks: 67},
{studentName: 'David', studentMarks: 89},
{studentName: 'Bob', studentMarks: 97}
];
function mergeKeepHigher(acc, curr) {
const existing = acc[curr.studentName];
if (!existing || curr.studentMarks >= existing.studentMarks) {
acc[curr.studentName] = curr;
}
return acc;
}
const mergedA = sectionA.reduce(mergeKeepHigher, {});
const mergedB = sectionB.reduce(mergeKeepHigher, mergedA);
console.log(Object.values(mergedB));
Cách chạy
node demo.js
Kết quả
[
{ studentName: 'John', studentMarks: 78 },
{ studentName: 'David', studentMarks: 89 },
{ studentName: 'Bob', studentMarks: 98 }
]
Ưu điểm: Không cần concat 2 mảng lớn, xử lý streaming, tiết kiệm bộ nhớ.