JavaScript-এ reduce() মেথড ব্যবহার করে একাধিক অবজেক্ট ধারণকারী অ্যারেকে একক অবজেক্টে ফ্ল্যাটেন (merge) করা যায়। এটি কনফিগারেশন মার্জ বা ডেটা অগ리게শনে খুবই কাজে লাগে।
ডেটা
const studentDetails = [
{ Name: "Chris" },
{ Age: 22 }
];
reduce() ব্যবহার করে ফ্ল্যাটেন
const mergedObject = studentDetails.reduce((acc, obj) => {
return { ...acc, ...obj };
}, {});
console.log(mergedObject);
চলানোর পদ্ধতি
- কোডটি
flattenDemo.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
node flattenDemo.js
আউটপুট
{ Name: 'Chris', Age: 22 }
কীভাবে কাজ করে
acc(accumulator) = প্রারম্ভিক খালি অবজেক্ট{}।- প্রতিটি ইটারেশনে
{...acc, ...obj}স্প্রেড অপারেটর দিয়ে মার্জ করা হয়। - সमान প্রপার্টি থাকলে শেষের মান প্রাধান্য পায়।
সংক্ষিপ্ত ভার্সন (Arrow Function)
const mergeObjects = arr => arr.reduce((a, b) => ({ ...a, ...b }), {});
console.log(mergeObjects([
{ a: 1 }, { b: 2 }, { c: 3 }
])); // { a: 1, b: 2, c: 3 }
Object.assign() বিকল্প (পুরনো পদ্ধতি)
const merged = Object.assign({}, ...studentDetails);
// { Name: 'Chris', Age: 22 }
দ্বন্দ্ব হ্যান্ডলিং (Duplicate Keys)
const data = [
{ id: 1, name: "A" },
{ id: 2, name: "B" } // id دوبার আসলে শেষের মান থাকবে
];
const result = data.reduce((a, b) => ({ ...a, ...b }), {});
console.log(result); // { id: 2, name: "B" }
সতর্কতা
- শ্যালো মার্জ (nested অবজেক্ট মার্জ করবে না)।
- ডিপ মার্জের জন্য লোডাশ
_.merge()বা কাস্টম রিকারসিভ ফাংশন লাগবে।