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

स्तर के अनुसार जावास्क्रिप्ट सरणी छँटाई

<घंटा/>

हमारे पास एक ही सरणी में एक से अनेक संबंधों वाला डेटा है। संगठन स्तर द्वारा स्थापित किया गया है। किसी तत्व का पैरेंट हमेशा अपने से एक स्तर ऊंचा होता है और उसे parentId द्वारा संदर्भित किया जाता है।

हमें इस सरणी से एक बहु-स्तरीय सरणी प्राप्त करने की आवश्यकता है। उच्चतम स्तर वाले तत्व मुख्य सरणी होंगे, उनके बच्चे उप-सरणी के रूप में होंगे।

यदि इनपुट ऐरे −

. द्वारा दिया जाता है
const arr = [
   {
      _id: 100,
      level: 3,
      parentId: null,
   },
   {
      _id: 101,
      level: 2,
      parentId: 100,
   },
   {
      _id: 102,
      level: 2,
      parentId: 100,
   },
   {
      _id: 103,
      level: 2,
      parentId: 100,
   },
   {
      _id: 104,
      level: 1,
      parentId: 101,
   },
   {
      _id: 105,
      level: 1,
      parentId: 102,
   },
   {
      _id: 106,
      level: 1,
      parentId: 101,
   },
   {
      _id: 107,
      level: 1,
      parentId: 103,
   },
   {
      _id: 108,
      level: 1,
      parentId: 102,
   },
   {
      _id: 109,
      level: 1,
      parentId: 103,
   }
];

फिर आउटपुट स्ट्रक्चर कुछ इस तरह होना चाहिए -

                                          100
                                           |
                           ------------------------------------
                           |                |                  |
                          101              102                103
                        -------          ------              ------
                        |     |          |    |              |    |
                       104   106        105  108            107   109

उदाहरण

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

const arr = [{
   _id: 100,
   level: 3,
   parentId: null,
},
{
   _id: 101,
   level: 2,
   parentId: 100,
},
{
   _id: 102,
   level: 2,
   parentId: 100,
},
{
   _id: 103,
   level: 2,
   parentId: 100,
},
{
   _id: 104,
   level: 1,
   parentId: 101,
},
{
   _id: 105,
   level: 1,
   parentId: 102,
},
{
   _id: 106,
   level: 1,
   parentId: 101,
},
{
   _id: 107,
   level: 1,
   parentId: 103,
},
{
   _id: 108,
   level: 1,
   parentId: 102,
},
{
   _id: 109,
   level: 1,
   parentId: 103,
}];
const prepareTree = (arr = [], root = null) => {
   let res;
   const obj = Object.create(null);
   arr.forEach(el => {
      el.children = obj[el._id] && obj[el._id].children;
      obj[el._id] = el;
      if (el.parentId === root) {
         res = el;
      }
      else {
         obj[el.parentId] = obj[el.parentId] || {};
         obj[el.parentId].children = obj[el.parentId].children || [];
         obj[el.parentId].children.push(el);
      }
   });
return res;
};
console.log(JSON.stringify(prepareTree(arr), undefined, 4));

आउटपुट

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

{
   "_id": 100,
   "level": 3,
   "parentId": null,
   "children": [
      {
         "_id": 101,
         "level": 2,
         "parentId": 100,
         "children": [
            {
               "_id": 104,
               "level": 1,
               "parentId": 101
            },
            {
               "_id": 106,
               "level": 1,
               "parentId": 101
            }
         ]
      },
      {
         "_id": 102,
         "level": 2,
         "parentId": 100,
         "children": [
            {
               "_id": 105,
               "level": 1,
               "parentId": 102
            },
            {
               "_id": 108,
               "level": 1,
               "parentId": 102
            }
         ]
      },
      {
         "_id": 103,
         "level": 2,
         "parentId": 100,
         "children": [
            {
               "_id": 107,
               "level": 1,
               "parentId": 103
            },
            {
               "_id": 109,
               "level": 1,
               "parentId": 103
            }
         ]
      }
   ]
}

  1. array.flatMap() जावास्क्रिप्ट में

    JavaScript array.flatMap() फ़ंक्शन दिए गए नेस्टेड सरणी को एक नए फ्लैट सरणी में समतल करता है। array.flatMap() विधि के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content

  1. जावास्क्रिप्ट में ऐरे स्लाइस ()

    जावास्क्रिप्ट ऐरे स्लाइस () विधि चयनित वस्तुओं की नई सरणी को एक बड़े सरणी में लौटाती है। यह मूल सरणी को नहीं बदलता है। सरणी स्लाइस () विधि के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .नमूना { फ़ॉन्ट-आकार:20px; फ़ॉन्ट-वजन:500;

  1. जावास्क्रिप्ट में ऐरे शिफ्ट ()

    जावास्क्रिप्ट ऐरे शिफ्ट () फ़ंक्शन सरणी से पहले तत्व को हटा देता है - सरणी शिफ्ट () फ़ंक्शन के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .नमूना { फ़ॉन्ट-आकार:20px; फ़ॉन्ट-वजन:500; }JavaScript Array Shiftयहां क्लिक करें सरणी से