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

JavaScript में रिकर्सिवली नेस्टेड ऑब्जेक्ट कीज सूचीबद्ध करें


मान लीजिए, हमारे पास एक ऑब्जेक्ट है जिसके प्रॉपर्टी वैल्यू में अन्य ऑब्जेक्ट्स हैं, यह 2-3 लेवल या उससे भी अधिक नेस्टेड है।

यहां नमूना ऑब्जेक्ट है:

const people = {
  Ram: {
    fullName: 'Ram Kumar',
    details: {
      age: 31,
      isEmployed: true
    }
  },
  Sourav: {
    fullName: 'Sourav Singh',
    details: {
      age: 22,
      isEmployed: false
    }
  },
  Jay: {
    fullName: 'Jay Grewal',
    details: {
      age: 26,
      isEmployed: true
    }
  }
}

हमारा काम एक फ़ंक्शन लिखना है जो इस ऑब्जेक्ट और एक स्ट्रिंग को स्वीकार करता है, पूरे ऑब्जेक्ट में उस स्ट्रिंग को key के रूप में खोजता है और एक ऐरे लौटाता है जिसमें उन सभी कीज के मान हों जो स्ट्रिंग से मेल खाते हैं।

आइए फ़ंक्शन को recursiveSearch() कहें, दिए गए नेस्टिंग को देखते हुए रिकर्सन इस स्थिति से निपटने का सबसे उपयुक्त तरीका होगा।

तो, इस फ़ंक्शन recursiveSearch() का पूरा कोड होगा:

उदाहरण

const people = {
  Ram: {
    fullName: 'Ram Kumar',
    details: {
      age: 31,
      isEmployed: true
    }
  },
  Sourav: {
    fullName: 'Sourav Singh',
    details: {
      age: 22,
      isEmployed: false
    }
  },
  Jay: {
    fullName: 'Jay Grewal',
    details: {
      age: 26,
      isEmployed: true
    }
  }
}
const recursiveSearch = (obj, searchKey, results = []) => {
  const r = results;
  Object.keys(obj).forEach(key => {
    const value = obj[key];
    if(key === searchKey && typeof value !== 'object'){
      r.push(value);
    }else if(typeof value === 'object'){
      recursiveSearch(value, searchKey, r);
    }
  });
  return r;
};
console.log(recursiveSearch(people, 'age'));

आउटपुट

कंसोल में आउटपुट होगा:

[ 31, 22, 26 ]

उपरोक्त फ़ंक्शन में, सबसे पहले हम मुख्य ऑब्जेक्ट पर पुनरावृति करते हैं और जब भी हमें नेस्टिंग मिलती है तो हम वांछित कुंजी की खोज के लिए सब ऑब्जेक्ट पर रिकर्सिवली पुनरावृति करते हैं, यदि हमें वांछित कुंजी मिलती है, तो हम तुरंत उसके मान को परिणाम ऐरे में रिकॉर्ड करते हैं और अंत में जब हम पुनरावृति समाप्त करते हैं, तो हम परिणाम ऐरे लौटाते हैं जिसमें वांछित मान होते हैं।

इस फ़ंक्शन की समय जटिलता O(mn) है जहां m मुख्य ऑब्जेक्ट के अंदर चाइल्ड ऑब्जेक्ट्स की संख्या है और n नेस्टिंग का सबसे गहरा स्तर है।


  1. JavaScript Proxy() ऑब्जेक्ट JavaScript Proxy() ऑब्जेक्ट

    JavaScript Proxy() ऑब्जेक्ट किसी ऑब्जेक्ट या फंक्शन को लपेटता है और मूलभूत संक्रियाओं जैसे प्रॉपर्टी एक्सेस करना, फंक्शन लागू करना आदि के लिए कस्टम एक्शन के लिए उपयोग किया जाता है।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <m

  1. जावास्क्रिप्ट का उपयोग करके ऐरे में नेस्टेड ऑब्जेक्ट वैल्यूज का योग जावास्क्रिप्ट का उपयोग करके ऐरे में नेस्टेड ऑब्जेक्ट वैल्यूज का योग

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

  1. जावास्क्रिप्ट में Object.keys().map() बनाम Array.map() जावास्क्रिप्ट में Object.keys().map() बनाम Array.map()

    जावास्क्रिप्ट में Object.keys().map() और Array.map() दिखाने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style>