मुझे लगता है कि कुछ कानूनी मामलों/कारणों से जुड़ा हुआ सूचियों को पसंद करते हैं देखते हैं:
कारण 1: दूसरों को पहले से ही बताया गया है, प्रविष्टि और हटाने के बाद ओ में तय प्रदर्शन (1) से जुड़ा हुआ सूचियों के लिए समय । यह आपकी समस्या के आधार पर एक महत्वपूर्ण लाभ हो सकता है।
कारण 2: आप लिंक की गई सूचियों वाली चीजें कर सकते हैं जिन्हें आप सरणी के साथ नहीं कर सकते हैं। यह एक लिंक्ड सूची की प्रकृति के कारण है -> प्रत्येक सूची प्रविष्टि को इसके अनुयायी के संदर्भ मिलते हैं (और पूर्ववर्ती यदि यह एक डबल लिंक्ड सूची है)।
example1:
तो अगर आप मदों की एक लिंक्ड सूची है cou एक "CurrentItem" एक चर में के लिए एक संदर्भ संग्रहीत कर सकती है। आप आइटम के पड़ोसियों का उपयोग करने की जरूरत है तुम सिर्फ लिख सकते हैं:
curItem.getNext();
या
curItem.getPrev();
अब आप तर्क दे सकता है कि आप सरणियों के साथ भी ऐसा ही हो सकता है, जबकि curItem सिर्फ वर्तमान सूचकांक है। असल में यह सच है (और ज्यादातर मामलों में मैं इसका उपयोग करता हूं), लेकिन याद रखें कि जावास्क्रिप्ट में सूचकांक छोड़ना संभव है।तो अपने सरणी इस तरह दिखता है, सूचकांक-विधि विचार के रूप में के रूप में आसानी से काम नहीं होगा:
myArray = [];
myArray[10] = 'a';
myArray[20] = 'b';
आप स्थिति उस तरह में अपने आप को मिल जाए, शायद किसी लिंक किए गए IST बेहतर विकल्प है।
हालांकि, यदि आपको डेटा तक यादृच्छिक पहुंच की आवश्यकता है (जो अधिकतर मामलों में ऐसा लगता है उससे अधिक शायद ही कभी) तो आप लगभग हर बार सरणी के साथ जाते हैं।
Example2:
आप "विभाजन" 2 अलग-अलग सूचियों में अपनी सूची, यह भी संभव हे (1) समय होगा चाहते हैं। सरणी के साथ आपको स्लाइस का उपयोग करने की आवश्यकता होगी, जो अधिक अपूर्ण है। हालांकि, यह केवल एक मुद्दा है यदि आप बड़े डेटासेट के साथ काम करते हैं और अक्सर इस ऑपरेशन को निष्पादित करते हैं। 10 मिलियन तारों की सरणी के टुकड़े करने की 20 पुनरावृत्तियों ने मेरी मशीन पर लगभग 4 सेकंड का समय लिया, जबकि एक सूची को 2 में विभाजित करने से < 1 सेकंड लिया गया (आपको पहले से ही सूची तत्व का संदर्भ दिया गया है जहां आप अलगाव शुरू करना चाहते हैं बेशक!)।
निष्कर्ष:
कुछ मामलों में आप एक सूची की प्रकृति से लाभ होगा और यह प्रदर्शन है। कुछ मामलों में, आप इसके अपूर्णता से पीड़ित होंगे (यादृच्छिक रूप से एकाधिक डेटा तक पहुंचने में असमर्थता)। मैंने कभी जावास्क्रिप्ट में एक सूची का उपयोग नहीं किया है, लेकिन पेड़ या ग्राफ जैसी समान संरचनाओं का उपयोग डेटा प्रतिनिधित्व (दोनों बैकएंड और फ्रंटेंड जावास्क्रिप्ट में) के लिए किया जाता है। तो जावास्क्रिप्ट में विश्लेषण सूची सीखना/सीखना अधिक जटिल संरचनाओं के लिए एक अच्छा विचार है।
जब आपको निरंतर समय डालने/हटाने की आवश्यकता होती है। – zerkms
नोडलिस्ट एक दोगुनी लिंक्ड सूची का एक उदाहरण है (बूट करने के लिए कुछ सरणी जैसी क्षमताओं के साथ)। – BoltClock
मैं लागू करेगा (या उपयोग) एक लिंक्ड सूची * तभी * अगर वहाँ था एक * विशिष्ट एल्गोरिथ्म * कि इस तरह से लाभ हुआ - * और * कार्यान्वयन के लिए जावास्क्रिप्ट भूमि के ऊपर अभी भी लाभ के लिए नगण्य था। (लेकिन यह सिर्फ के बारे में किसी भी भाषा में बनाम एक 'सामान्य' सरणी-सूची लिंक किया हुआ-सूची प्रयोग करने के लिए एक ही है।) एक * के साथ मानक सरणी प्रकार देशी कार्यान्वयन अनुकूलित * "काफी तेजी से", यहां तक कि के लिए है मध्यम के- ऐरे संचालन। वाईएमएमवी के रूप में यह कार्यान्वयन के अनुसार बदल जाएगा लेकिन अक्सर 1) यह बस मामला नहीं है और/या 2) एक ऐरे समर्थित बैक सूची बस अच्छा या बेहतर है। – user2864740