मान लीजिए कि हमारे पास दो सरणियाँ हैं, पहली सरणी में कुछ घटनाओं के लिए निर्धारित तिथि है और दूसरी सरणी में उन घटनाओं के नाम हैं, जैसे -
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 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" } ]