फ्रंटएंड लीनियर डेटा स्ट्रक्चर्स
लिनिअर डेटा स्ट्रक्चर्समध्ये घटक एका क्रमाने मांडलेले असतात. प्रत्येक घटकाचा एक पूर्ववर्ती (predecessor) आणि एक उत्तरवर्ती (successor) असतो.
Arrays
Arrays हे JavaScript मधील मुख्य साधन आहेत. ते सलग मेमरी (contiguous memory) वापरतात. यामुळे तुम्ही कोणत्याही घटकाला त्याच्या इंडेक्सद्वारे (index) त्वरित ॲक्सेस करू शकता.
- push: शेवटी एक घटक जोडतो.
- unshift: सुरुवातीला एक घटक जोडतो. हे संथ असते कारण इतर सर्व घटकांना एक स्थान उजवीकडे सरकावे लागते.
- splice: कोणत्याही स्थानावर घटक जोडतो किंवा काढून टाकतो. ही पद्धत मूळ ॲरेमध्ये बदल करते. हे 'pure function' नाही.
टीप: जेव्हा ॲरे खूप मोठा होतो, तेव्हा JavaScript ला मेमरीचा मोठा ब्लॉक वाटप करावा लागतो आणि सर्व डेटा कॉपी करावा लागतो. यामुळे परफॉर्मन्सवर परिणाम होतो.
Stacks
Stack हे LIFO नियमाचे पालन करते: Last In, First Out. प्लेट्सच्या थप्पीचा विचार करा. तुम्ही फक्त वरच्या बाजूने घटक जोडू शकता किंवा काढू शकता.
- push: वरच्या बाजूला जोडा.
- pop: वरच्या बाजूने काढून टाका.
- peek: घटक न काढता फक्त वरचा घटक पहा.
Queues
Queue हे FIFO नियमाचे पालन करते: First In, First Out. दुकानातील रांगेचा विचार करा.
- push: मागे जोडा.
- shift: पुढून काढून टाका.
चेतावणी: मोठ्या डेटासेटसाठी ॲरेवर shift वापरणे संथ असते. रिकामी जागा भरण्यासाठी प्रत्येक घटकाला डावीकडे सरकावे लागते. मोठ्या प्रमाणात डेटा असल्यास, त्याऐवजी 'linked list' वापरा.
Linked Lists
Linked list मध्ये 'nodes' असतात. प्रत्येक नोडमध्ये डेटा आणि पुढच्या नोडचा पॉइंटर (pointer) असतो.
- फायदे: एकदा जागा सापडली की नोड्स जोडणे किंवा काढून टाकणे जलद असते. तुम्हाला फक्त पॉइंटर्स बदलावे लागतात.
- तोटे: तुम्ही थेट कोणत्याही इंडेक्सवर जाऊ शकत नाही. तुम्हाला 'head' पासून सुरुवात करून एक-एक करून पॉइंटर्स फॉलो करावे लागतात. हे संथ असते.
तुलनात्मक सारांश:
- Arrays: वारंवार वाचण्यासाठी (reads) आणि लहान डेटासाठी सर्वोत्तम. ॲक्सेस O(1) असतो.
- Linked Lists: वारंवार लिहिण्यासाठी (writes) आणि मोठ्या डेटासाठी सर्वोत्तम. जर तुमच्याकडे नोड असेल, तर इन्सर्शन O(1) असते.
JavaScript साठी प्रो टिप्स:
- ॲरेमध्ये विविध डेटा प्रकार (data types) एकत्र करू नका. प्रकार एकसमान ठेवल्यास इंजिनला सलग मेमरी वापरण्यास मदत होते.
- संख्या सॉर्ट करताना नेहमी 'comparator function' वापरा.
[10, 2].sort()चे उत्तर[10, 2]येते कारण ते स्ट्रिंग म्हणून सॉर्ट करते. - लक्षात ठेवा की बहुतेक मूळ (native) ॲरे मेथड्स मूळ ॲरेमध्ये बदल (mutate) करतात.