কম্পিউটার টিউটোরিয়াল

JavaScript-এ দুটি অ্যারে কনক্যাট না করে হাইয়েস্ট ভ্যালু वाले অবজেক্ট বের করা (reduce)

JavaScript-এ দুটি অ্যারে কনক্যাটেনেট না করে, প্রতিটি আলাদা আলাদা `reduce()` করে কী অনুযায়ী হাইয়েস্ট ভ্যালু वाला অবজেক্ট বের করা যায়। এটি মেমরি ইফিশিয়েন্ট ও ফাংশনাল।

ডেটা

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

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

reduce() পদ্ধতি

function mergeByMax(acc, current) {
    const existing = acc[current.studentName];
    if (!existing || current.studentMarks >= existing.studentMarks) {
        acc[current.studentName] = current;
    }
    return acc;
}

const combined = sectionA.reduce(mergeByMax, {});
sectionB.reduce(mergeByMax, combined); // sectionA-এর রেজাল্টে sectionB মার্জ

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

চলানোর পদ্ধতি

  1. কোডটি mergeMax.js নামে সংরক্ষণ করুন।
  2. টার্মিনালে চালান: node mergeMax.js

আউটপুট

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

কীভাবে কাজ করে

  • অ্যাকিউমুলেটর (`acc`) হলো একটি অবজেক্ট (Map-লাইক), কী = studentName।
  • প্রতিটি অবজেক্টে: যদি না থাকে বা বর্তমান মার্কস বেশি/সমান → আপডেট।
  • দুইবার `reduce()` কল: প্রথমে A, তারপর B (A-এর রেজাল্টে B মার্জ)۔
  • `Object.values()` দিয়ে ফাইনাল অ্যারে পাওয়া।

জেনেরিক ফাংশন

function mergeArraysByKeyMax(arrays, key, valueKey) {
    return Object.values(
        arrays.reduce((acc, arr) => 
            arr.reduce((a, item) => {
                const k = item[key];
                if (!a[k] || item[valueKey] >= a[k][valueKey]) a[k] = item;
                return a;
            }, acc), {})
    );
}

// ব্যবহার
const result = mergeArraysByKeyMax([sectionA, sectionB], 'studentName', 'studentMarks');

তুলনা: concat + reduce vs double reduce

পদ্ধতিমেমরিপারফরম্যান্স
concat + reduceO(n+m) স্পেসএক্সট্রা অ্যালোকেশন
Double reduceO(unique keys)ইন-প্লেস মের্জ, দ্রুত
  1. জাভাস্ক্রিপ্টে div থেকে মান পাওয়া (undefined সমস্যা সমাধান)

  2. জাভাস্ক্রিপ্টে সাব-অবজেক্ট ও অ্যারে সহ অবজেক্ট ইমপোর্ট করা

  3. JavaScript-এ XML ডেটা থেকে অ্যাট্রিবিউট ভ্যালু পাওয়া (jQuery attr)

  4. অবজেক্ট রিকগনিশন আবিষ্কার করুন: আপনার ফোন ক্যামেরাকে স্মার্ট আইডেন্টিফায়ার বানান এমন টপ অ্যাপস