Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Lấy object có giá trị lớn hơn từ 2 mảng mà không concat trong JavaScript

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ớ.