जावास्क्रिप्ट में प्रत्येक ऑब्जेक्ट को ऑब्जेक्ट हैश के रूप में कार्यान्वित किया जाता है, इसलिए कोई कार्यात्मक अंतर नहीं होता है।
उदाहरण के लिए, इस परीक्षण की जाँच:
var arr = [];
arr[5] = 5;
arr['5'] = 'not 5';
console.log(arr.length, arr);
// output: 6 [undefined, undefined, undefined, undefined, undefined, "not 5"]
नंबर जब स्थिति के रूप में इस्तेमाल stringified कर रहे हैं।
अधिक जानकारी के लिए Crockford's website के बारे में जावास्क्रिप्ट के बारे में देखें। विशेष रूप से महत्वपूर्ण हिस्सा शीर्षक "सरणी" किया जा रहा है:
Arrays in JavaScript are also hashtable objects.
प्रदर्शन जब तक आप वस्तुओं की एक टन का ट्रैक (जैसे 500,000+) रखने के लिए एक मुद्दा वास्तव में नहीं है, इस स्थिति में आप ' शायद कुछ गलत कर रहे हैं।
अनुकूलन आप कर सकते हैं, लेकिन वे वास्तव में तब तक समझ में नहीं आते जब तक आप जावास्क्रिप्ट के साथ कुछ अप्राकृतिक नहीं कर रहे हैं (जैसे संपीड़न एल्गोरिदम ... मैंने जेएस में एक एलजेएमए कार्यान्वयन पर काम किया ... बुरा विचार)।
नोट:
आप एक अतिरिक्त सेट किया हुआ है (जैसे आप 10,000 में से केवल 10 अनुक्रमणिका परिभाषित), तो आप शायद एक नियमित रूप से वस्तु का उपयोग कर किया जाना चाहिए। Arrays सभी 10,000 इंडेक्स को 'अपरिभाषित' में प्रारंभ करेंगे, जबकि Object.keys(obj)
केवल आपके द्वारा सेट किए गए 10 की रिपोर्ट करेगा। यह एक मामूली अनुकूलन है जो वास्तव में समझ में आता है।
आपने अपने द्वारा किए गए शोध में से किसी भी प्रश्न के बारे में आपको क्या बताया है? –
मैं अपने आप पर कुछ शोध नहीं करना चाहता हूं कि ए) मैं शायद वैसे भी गलत हो जाऊंगा और बी) इस विषय पर मुझे पहले से किसी और के द्वारा किया गया है। – hugomg
अद्यतन: [क्या ऐसी कोई चीज है जो जावास्क्रिप्ट में किसी ऑब्जेक्ट की संपत्ति तक पहुंचने के लिए निरंतर समय की गारंटी देती है?] (Http://stackoverflow.com/q/34292087/1048572) – Bergi