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);
চলানোর পদ্ধতি
- কোডটি
filterMaxProp.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
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 টেস্ট রেজাল্ট মের্জ
- ভের্সন কন্ট্রোল কনফ্লিক্ট রেজোলিউশন