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

जावास्क्रिप्ट के साथ नेस्टेड संग्रह फ़िल्टर

<घंटा/>

मान लीजिए, हमारे पास इस तरह की नेस्टेड वस्तुओं की एक सरणी है -

const arr = [{
   id: 1,
   legs:[{
      carrierName:'Pegasus'
   }]
},
{
   id: 2,
   legs:[{
      carrierName: 'SunExpress'
   },
   {
      carrierName: 'SunExpress'
   }]
},
{
   id: 3,
   legs:[{
      carrierName: 'Pegasus'
   },
   {
      carrierName: 'SunExpress'
   }]
}];

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले तर्क के रूप में एक ऐसी सरणी लेता है और दूसरे तर्क के रूप में एक खोज क्वेरी स्ट्रिंग लेता है।

हमारे फ़ंक्शन को केवल उन वस्तुओं को शामिल करने के लिए सरणी को फ़िल्टर करना चाहिए जिनकी "वाहक नाम" संपत्ति मान दूसरे तर्क द्वारा निर्दिष्ट समान मान है।

यदि उपरोक्त सरणी के लिए, दूसरा तर्क "पेगासस" है। तब आउटपुट कुछ इस तरह दिखना चाहिए -

const output = [{
   id: 1,
   legs:[{
      carrierName:'Pegasus'
   }]
},
{
   id: 3,
   legs:[{
      carrierName: 'Pegasus'
   },
   {
      carrierName: 'SunExpress'
   }]
}];

उदाहरण

इसके लिए कोड होगा -

const arr = [{
   id: 1,
   legs:[{
      carrierName:'Pegasus'
   }]
},
{
   id: 2,
   legs:[{
      carrierName: 'SunExpress'
   },
   {
      carrierName: 'SunExpress'
   }]
},
{
   id: 3,
   legs:[{
      carrierName: 'Pegasus'
   },
   {
      carrierName: 'SunExpress'
   }]
}];
const keys = ['Pegasus'];
const filterByKeys = (arr = [], keys = []) => {
   const res = arr.filter(function(item) {
      const thisObj = this;
      return item.legs.some(leg => {
         return thisObj[leg.carrierName];
      });
   }, keys.reduce((acc, val) => {
      acc[val] = true;
      return acc;
   }, Object.create(null)));
   return res;
}
console.log(JSON.stringify(filterByKeys(arr, keys), undefined, 4));

आउटपुट

और कंसोल में आउटपुट होगा -

[
   {
      "id": 1,
      "legs": [
         {
            "carrierName": "Pegasus"
         }
      ]
   },
   {
      "id": 3,
      "legs": [
         {
            "carrierName": "Pegasus"
         },
         {
            "carrierName": "SunExpress"
         }
      ]
   }
]

  1. जावास्क्रिप्ट में नेस्टेड डी-स्ट्रक्चरिंग।

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

  1. उदाहरण के साथ जावास्क्रिप्ट में वंशानुक्रम

    जावास्क्रिप्ट एक वस्तु-आधारित भाषा है जो प्रोटोटाइप पर आधारित है। प्रोटोटाइप ऑब्जेक्ट का उपयोग करके जावास्क्रिप्ट में वंशानुक्रम लागू किया गया है। जावास्क्रिप्ट में इनहेरिटेंस को लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta

  1. जावास्क्रिप्ट के साथ लिंक फ़िल्टर करने के लिए खोज मेनू कैसे बनाएं?

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