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

जावास्क्रिप्ट में फ्लैट सरणी से ट्री सरणी बनाएँ

<घंटा/>

हमारे पास एक जटिल json फ़ाइल है जिसे हमें बाद में एक पेड़ बनाने के लिए, इसे पदानुक्रमित बनाने के लिए जावास्क्रिप्ट के साथ संभालना होगा।

JSON सरणी की प्रत्येक प्रविष्टि में -

. है
  • आईडी - एक अद्वितीय आईडी,

  • parentId - पैरेंट नोड की आईडी (जो कि 0 है अगर नोड पेड़ की जड़ है)

  • स्तर - पेड़ में गहराई का स्तर

JSON डेटा पहले से ही "आदेशित" है, इसका मतलब है कि एक प्रविष्टि में अपने आप में एक पैरेंट नोड या भाई नोड होगा, और अपने आप में एक चाइल्ड नोड या एक भाई नोड होगा।

इनपुट ऐरे है -

const arr = [
   {
      "id": "12",
      "parentId": "0",
      "text": "Man",
      "level": "1",
      "children": null
   },
   {
      "id": "6",
      "parentId": "12",
      "text": "Boy",
      "level": "2",
      "children": null
   },
   {
      "id": "7",
      "parentId": "12",
      "text": "Other",
      "level": "2",
      "children": null
   },
   {
      "id": "9",
      "parentId": "0",
      "text": "Woman",
      "level": "1",
      "children": null
   },
   {
      "id": "11",
      "parentId": "9",
      "text": "Girl",
      "level": "2",
      "children": null
   }
];

और अपेक्षित आउटपुट है -

const output = [
   {
      "id": "12",
      "parentId": "0",
      "text": "Man",
      "level": "1",
      "children": [
         {
            "id": "6",
            "parentId": "12",
            "text": "Boy",
            "level": "2",
            "children": []
         },
         {
            "id": "7",
            "parentId": "12",
            "text": "Other",
            "level": "2",
            "children": []
         }
      ]
   },
   {
      "id": "9",
      "parentId": "0",
      "text": "Woman",
      "level": "1",
      "children": [
         {
            "id": "11",
            "parentId": "9",
            "text": "Girl",
            "level": "2",
            "children": []
         }
      ]
   }
];

उदाहरण

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

const arr = [
   {
      "id": "12",
      "parentId": "0",
      "text": "Man",
      "level": "1",
      "children": null
   },
   {
      "id": "6",
      "parentId": "12",
      "text": "Boy",
      "level": "2",
      "children": null
   },
   {
      "id": "7",
      "parentId": "12",
      "text": "Other",
      "level": "2",
      "children": null
   },
   {
      "id": "9",
      "parentId": "0",
      "text": "Woman",
      "level": "1",
      "children": null
   },
   {
      "id": "11",
      "parentId": "9",
      "text": "Girl",
      "level": "2",
      "children": null
   }
];
const listToTree = (arr = []) => {
   let map = {}, node, res = [], i;
   for (i = 0; i < arr.length; i += 1) {
      map[arr[i].id] = i;
      arr[i].children = [];
   };
   for (i = 0; i < arr.length; i += 1) {
      node = arr[i];
      if (node.parentId !== "0") {
         arr[map[node.parentId]].children.push(node);
      }
      else {
         res.push(node);
      };
   };
   return res;
};
console.log(JSON.stringify(listToTree(arr), undefined, 4));

आउटपुट

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

[
   {
      "id": "12",
      "parentId": "0",
      "text": "Man",
      "level": "1",
      "children": [
         {
            "id": "6",
            "parentId": "12",
            "text": "Boy",
            "level": "2",
            "children": []
         },
         {
            "id": "7",
            "parentId": "12",
            "text": "Other",
            "level": "2",
            "children": []
         }
      ]
   },
   {
      "id": "9",
      "parentId": "0",
      "text": "Woman",
      "level": "1",
      "children": [
         {
            "id": "11",
            "parentId": "9",
            "text": "Girl",
            "level": "2",
            "children": []
         }
      ]
   }
]

  1. जावास्क्रिप्ट में Array.flat () विधि।

    JavaScript Array.flat() विधि का उपयोग किसी सरणी को एक निर्दिष्ट गहराई तक पुनरावर्ती रूप से समतल करने के लिए किया जाता है। यह मूल सरणी में हेरफेर नहीं करता है लेकिन एक नया चपटा सरणी बनाता है। Array.flat() विधि के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> &

  1. जावास्क्रिप्ट में Array.prototype.flat()।

    JavaScript Array.prototype.flat() विधि का उपयोग किसी सरणी को एक निर्दिष्ट गहराई तक पुनरावर्ती रूप से समतल करने के लिए किया जाता है। यह मूल सरणी में हेरफेर नहीं करता है लेकिन एक नया चपटा सरणी बनाता है। Array.prototype.flat() विधि के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=

  1. जावास्क्रिप्ट में पेड़ के लिए वस्तुओं की फ्लैट सरणी

    मान लीजिए, हमारे पास इस तरह की वस्तुओं की एक सरणी है - const arr = [    { id: '1', name: 'name 1', parentId: null },    { id: '2', name: 'name 2', parentId: null },    { id: '2_1', name: 'name 2_1', parentId: '2' }