Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में दो अलग-अलग सरणियों को मिलाएं

<घंटा/>

मान लीजिए कि हमारे पास दो सरणियाँ हैं, पहली सरणी में कुछ घटनाओं के लिए निर्धारित तिथि है और दूसरी सरणी में उन घटनाओं के नाम हैं, जैसे -

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"
   }
]

  1. जावास्क्रिप्ट में सरणी बनाम सेट।

    सेट डेटा प्रकार को ES2015 में पेश किया गया था और सरणी और सेट के बीच का अंतर यह है कि एक सरणी में डुप्लिकेट मान हो सकते हैं, जबकि एक सेट नहीं कर सकता। तत्वों को इंडेक्स का उपयोग करके सरणी में एक्सेस किया जा सकता है जो सेट में संभव नहीं है क्योंकि यह कुंजियों का उपयोग करता है और तत्वों को केवल उसी तरह

  1. जावास्क्रिप्ट में दो सरणियों में कैसे शामिल हों?

    जावास्क्रिप्ट में दो सरणियों को एक साथ जोड़ने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>

  1. जावास्क्रिप्ट में दो ऐरे कैसे गुणा करें?

    जावास्क्रिप्ट में दो सरणियों को गुणा करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Doc