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

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. JavaScript Array.flatMap(): मैप और फ्लैटेन एक साथ JavaScript Array.flatMap(): मैप और फ्लैटेन एक साथ

    Array.prototype.flatMap() मेथड पहले प्रत्येक तत्व पर मैप फंक्शन लागू करता है, फिर परिणाम को एक स्तर तक फ्लैट करता है। यह arr.map(...).flat() के बराबर है लेकिन थोड़ा अधिक कुशल है। उदाहरण x); fillEle.innerHTML = फ्लैट एरे:<br>; for (const x of flat.entries()) { f

  1. JavaScript Array.slice(): एरे का भाग निकालें JavaScript Array.slice(): एरे का भाग निकालें

    Array.prototype.slice() मेथड एरे के एक भाग को निकालकर नया एरे लौटाता है। मूल एरे अपरिवर्तित रहता है। ऋणात्मक इंडेक्स अंत से गिनते हैं। उदाहरण { // slice(1, 4) = इंडेक्स 1, 2, 3 (4 शामिल नहीं) const sliced = arr.slice(1, 4); fillEle.innerHTML = slice(1, 4) परिणाम: + slice

  1. JavaScript Array.shift(): पहला तत्व हटाएं JavaScript Array.shift(): पहला तत्व हटाएं

    Array.prototype.shift() मेथड एरे से पहला तत्व हटाता है, उस तत्व को लौटाता है, और शेष सभी तत्वों के इंडेक्स को 1 से घटा देता है। यह एरे की लंबाई बदल देता है। उदाहरण { const removed = arr.shift(); fillEle.innerHTML = `हटाया गया: ${removed}<br>शेष: ` + arr.join(, ); });