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

JavaScript-এ অবজেক্ট অ্যারে ফিল্টার করে নির্দিষ্ট প্রপার্টির হাইয়েস্ট ভ্যালু রাখা

JavaScript-এ দুটি অবজেক্ট অ্যারে থেকে একই পজিশনের অবজেক্টগুলো তুলনা করে নির্দিষ্ট প্রপার্টি (`amount`) এর হাইয়েস্ট ভ্যালু वाला অবজেক্ট রাখা যায় `map()` এবং টারনারি অপারেটর দিয়ে।

ডেটা

const first = [
    { firstName: 'John', amount: 100 },
    { firstName: 'David', amount: 50 },
    { firstName: 'Bob', amount: 80 }
];

const second = [
    { firstName: 'John', amount: 400 },
    { firstName: 'David', amount: 70 },
    { firstName: 'Bob', amount: 40 }
];

Map + টারনারি পদ্ধতি

const result = first.map((obj, index) => 
    obj.amount > second[index].amount ? obj : second[index]
);

console.log(result);

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

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

আউটপুট

[
  { firstName: 'John', amount: 400 },
  { firstName: 'David', amount: 70 },
  { firstName: 'Bob', amount: 80 }
]

ব্যাখ্যা

  • `map()` - প্রথম অ্যারে ইটারেট করে, ইনডেক্স দিয়ে দ্বিতীয় অ্যারে অ্যাক্সেস।
  • টারনারি: `obj.amount > second[index].amount ? obj : second[index]`
  • অসামান্য লেন্থ হলে এরর হতে পারে (বাউন্ডস চেক যোগ করুন)।

সুরক্ষিত ভার্সন

function mergeByMaxProp(arr1, arr2, prop) {
    const len = Math.max(arr1.length, arr2.length);
    return Array.from({ length: len }, (_, i) => {
        const a = arr1[i], b = arr2[i];
        if (!a) return b;
        if (!b) return a;
        return a[prop] > b[prop] ? a : b;
    });
}

বিকল্প: Key-ভিত্তিক মার্জ (পজিশন নয়)

function mergeByKeyMax(arr1, arr2, key, valueProp) {
    const map = new Map();
    [...arr1, ...arr2].forEach(obj => {
        const k = obj[key];
        if (!map.has(k) || obj[valueProp] > map.get(k)[valueProp]) {
            map.set(k, obj);
        }
    });
    return [...map.values()];
}

ব্যবহার ক্ষেত্র

  • দুই টিমের স্কোর কম্পেয়ার
  • A/B টেস্ট রেজাল্ট মের্জ
  • ভের্সন কন্ট্রোল কনফ্লিক্ট রেজোলিউশন
  1. JavaScript Filter মেথড: স্টেপ-বাই-স্টেপ গাইড

  2. জাভাস্ক্রিপ্ট অ্যারে অবজেক্ট গণনা করার উপায়

  3. জাভাস্ক্রিপ্ট Array length প্রপার্টি

  4. জাভাস্ক্রিপ্ট - অ্যারে অবজেক্টের length প্রোপার্টি