मैं जावास्क्रिप्ट के बारे में एक पुस्तक पढ़ रहा था और इस लाइन को देखा;एक वास्तविक बहु आयामी सरणी क्या है?
जावास्क्रिप्ट सच बहुआयामी सरणी का समर्थन नहीं करता है, लेकिन आप उन्हें सरणी के सरणी के साथ अनुमानित कर सकते हैं।
क्या अंतर है?
मैं जावास्क्रिप्ट के बारे में एक पुस्तक पढ़ रहा था और इस लाइन को देखा;एक वास्तविक बहु आयामी सरणी क्या है?
जावास्क्रिप्ट सच बहुआयामी सरणी का समर्थन नहीं करता है, लेकिन आप उन्हें सरणी के सरणी के साथ अनुमानित कर सकते हैं।
क्या अंतर है?
एक वास्तविक बहु-आयामी सरणी को कई सूचकांक के साथ अनुक्रमित किया जाना चाहिए। सरणी की एक सरणी को एक इंडेक्स के साथ अनुक्रमित किया जा सकता है, जो एक और सरणी लौटाएगा। एक सच्चे बहु-आयामी सरणी अपने सभी डेटा को संगत रूप से संग्रहीत करती है। सरणी की एक सरणी अपने सभी घटक अरणों को मनमाने ढंग से बिखरी हुई है। यह सच्चे सरणी के लिए कैश प्रभावों के कारण पुनरावृत्ति प्रदर्शन में सुधार कर सकता है।
जावास्क्रिप्ट में ऐसा कुछ नहीं है ...
var arr = new Array[5][3]; /* Some weird JS/C-like thing for demonstration */
... enforced लंबाई के साथ। एक मैट्रिक्स की तरह।
हालांकि, आप Array
बना सकते हैं, जिनमें से इसके सदस्य सभी Array
एस निश्चित अवधि के हैं। यदि उप Array
एस में से एक अलग लंबाई थी, तो यह जागArray
होगा।
(एक दृश्य व्याख्या यह है कि @recursive का एक उत्कृष्ट answer पूरक)
कुछ भाषाओं में (सी #) दोनों कर रहे हैं। अंतर ऐसे सरणी के "आकार" में है।
int[3, 4] // true two-dimensional array
// it will "look" like this, rectangular shape
[[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]]
लेकिन जब आप सरणी की सरणी को परिभाषित करते हैं, तो यह आसानी से (विशेष रूप से जावास्क्रिप्ट में) इस तरह दिख सकता है। इसे jagged array कहा जाता है।
[[0, 0]
[0, 0, 0, 0, 0, 0]
[0, 0, 0]]
एमएसडीएन लेख स्पष्ट था। धन्यवाद। – Sinan
हालांकि JavaScript विनिर्देश (3.0) बहुआयामी सरणियों का उल्लेख नहीं है, वे संभव वास्तव में कर रहे हैं। बहु-आयामी सरणी को सरणी के सरणी द्वारा दर्शाया जा सकता है। See।
उदाहरण के लिए।
var items = [[1,2],[3,4],[5,6]];
alert(items[0][0]); // Would alert 1
जावास्क्रिप्ट में एक आयामी सरणी।
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
2 == [2] //true
// Even complex
2 == [[[2]]] //true
// And even more
var a = { "xyz" : 1 };
a[[[["xyz"]]]] === a["xyz"]; //true
लेखक ग्रहण करने के लिए है कि एक "सही" बहुआयामी सरणी से एक है लगता है जहां सभी तत्वों:
सरणियों हैं;
मूल्य द्वारा संग्रहीत किया जाता है, संदर्भ के अनुसार नहीं; और
समान लंबाई है।
जावास्क्रिप्ट सरणी में अन्य सरणी हो सकती हैं, लेकिन मूल्य से नहीं, केवल संदर्भ द्वारा।यही है, प्रत्येक पंक्ति के तत्व स्मृति में संगत हो सकते हैं, लेकिन पंक्तियां स्वयं नहीं हो सकती हैं। इसके अलावा, स्थिर रूप से इंगित करने का कोई तरीका नहीं है कि सभी आंतरिक सरणीओं में समान लंबाई होनी चाहिए, क्योंकि जावास्क्रिप्ट गतिशील रूप से टाइप किया गया है।
लेकिन सरणी की एक सरणी ठीक है जो आपको जावास्क्रिप्ट में एक बहुआयामी सरणी का प्रतिनिधित्व करने के लिए उपयोग करना चाहिए, और आंतरिक प्रतिनिधित्व का विवरण शायद आपके लिए प्रासंगिक नहीं है जब आप केवल भाषा सीख रहे हों।
+1 विस्तृत और स्पष्ट। – alex
यदि कोई सरणी मौजूद है जो आपको "पंक्ति" को पुनर्प्राप्त करने के लिए एक एकल अनुक्रमणिका का उपयोग करने देती है, लेकिन इसके सभी डेटा को संगत रूप से संग्रहीत किया गया है, तो क्या यह आवश्यक रूप से वास्तव में बहु-आयामी नहीं होगा? दूसरे शब्दों में, क्या इन दोनों बाधाओं को वास्तव में पूरा करना है, या केवल उत्तरार्द्ध? – kojiro
उदाहरण के लिए अच्छी तरह से नोट करें कि जावास्क्रिप्ट में कोई प्रवर्तन नहीं है कि दो-आयामी सरणी की पंक्तियों में कॉलम की संख्या समान है। – Pointy