ধরুন আমাদের কাছে দুটি অ্যারে আছে, প্রথম অ্যারে-তে কিছু ইভেন্টের শিডিউলড ডেট 있고 দ্বিতীয় অ্যারে-তে সেসব ইভেন্টের নাম আছে −
const dates = [ { id:"1", date:"2017-11-07" }, { id:"1", date:"2017-11-08" }, { id:"2", date:"2017-11-07" }, { id:"2", date:"2017-11-08" } ]; const names = [ { id:"1", name:"Pervies, Peter" }, { id:"2", name:"Ming, Edmund" } ]; আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি такие অ্যারে নেবে এবং id প্রপার্টি-র ভিত্তিতে ইভেন্টের নামগুলোকে তাদের সংশ্লিষ্ট ডেটের সাথে কম্বাইন করবে।
তাই, এই অ্যারেগুলোর জন্য আউটপুট হওয়া উচিত −
const output = [ { id:"1", name:"Pervies, Peter", details:[ {date:"2017-11-07"}, {date:"2017-11-08"} ] }, { id:"2", name:"Ming, Edmund", details:[ {date:"2017-11-07"}, {date:"2017-11-08"} ] } ]উদাহরণ
কোডটি নিচে দেওয়া হলো −
const dates = [ { id:"1", date:"2017-11-07" }, { id:"1", date:"2017-11-08" }, { id:"2", date:"2017-11-07" }, { id:"2", date:"2017-11-08" } ]; const names = [ { id:"1", name:"Pervies, Peter" }, { id:"2", name:"Ming, Edmund" } ]; const combineArrays = (dates, names) => { const res = []; dates.forEach(el => { const bool = !res.some(item => { return item.id == el.id; }); if(bool){ let combined = {}; combined.id = el.id; combined.details = combined.details || []; combined.details.push({ "date": el.date }); res.push(combined); }else{ res.find(item => { return item.id === el.id; }) .details.push({ "date": el.date }); }; }); res.forEach(el => { const bool = names.some(item => { return item.id === el.id; }); if(bool){ el.name = names.find(name => { return name.id === el.id; }).name; }; }); return res; }; console.log(JSON.stringify(combineArrays(dates, names), undefined, 4));আউটপুট
কনসোলে আউটপুট −
[ { "id": "1", "details": [ { "date": "2017-11-07" }, { "date": "2017-11-08" } ], "name": "Pervies, Peter" }, { "id": "2", "details": [ { "date": "2017-11-07" }, { "date": "2017-11-08" } ], "name": "Ming, Edmund" } ]