2015-06-10 4 views
6

मैं बाहर हाल ही में कुछ जावास्क्रिप्ट सीखने की है और पाया है कि आप इस तरह से एक सरणी में विभिन्न डेटा प्रकार स्टोर कर सकते हैं:किस स्थिति में सरणी में संग्रहीत किया जाएगा विभिन्न डेटा प्रकार जावास्क्रिप्ट में उपयोगी होंगे?

var myArray = [12, 23.5, "hello", true]; 

मैं कुछ जावा पृष्ठभूमि है और यह आप की घोषणा करने के लिए होता है के रूप में जावा में संभव नहीं है डेटा प्रकार अन्यथा आपको एक त्रुटि मिलेगी (int myArray = blah blah blah)

तो मेरा सवाल यह है कि उदाहरण के लिए आप किसी ऑब्जेक्ट के बजाय इसका उपयोग किस स्थिति में करेंगे। उदाहरण बहुत अच्छे होंगे। धन्यवाद।

+1

एक उदाहरण 'तर्कसंगत') की एक सरणी होगी, जैसा कि ['.apply()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ समारोह/लागू)। –

+0

यह जावा में 'ArrayList ' जैसा है। – Bergi

उत्तर

4

यह किसी भी भाषा में दृढ़ता से टाइप नहीं किया गया है। आपके सरणी सदस्य विभिन्न आदिम हो सकते हैं और वे ऑब्जेक्ट भी हो सकते हैं। ज्यादातर मामलों में आप इसका उपयोग नहीं करना चाहेंगे क्योंकि आपके सरणी में कोई स्पष्ट संरचना नहीं है। आप बल्कि तरह कुछ होगा:

Object[] prove = {1, "hi"}; 

जावास्क्रिप्ट में एक ही है, वस्तुओं की एक सरणी है:

var data = { 
    prop: 12, 
    otherProp: 24.5, 
    stringProp: "hello", 
    boolProp: true 
}; 
+0

महान बिंदु "क्योंकि आपके सरणी में कोई स्पष्ट संरचना नहीं है।" –

+0

हाँ महान बिंदु। एक सरणी में एकाधिक डेटा प्रकार होने के बजाय, यह शायद इसे एक सादे वस्तु के रूप में ढांचे के लिए अधिक उचित होगा। –

+0

मैंने यह नहीं कहा है कि जावा में ऐसा करना संभव नहीं है, मैं बस इतना कह रहा था कि जेएस, जो दृढ़ता से टाइप नहीं किया गया है और इस तरह की कोई अन्य भाषा भाषा, उदाहरण के लिए पाइथन की तरह, इसे अनुमति दें। –

3

जो मुझे पता है, वास्तव में कोई नियम या विशिष्ट परिस्थितियों का सेट नहीं है जहां इसे जावास्क्रिप्ट में एक ही सरणी में विभिन्न प्रकार के मूल्यों को स्टोर करने के लिए सबसे अच्छा अभ्यास माना जाएगा। यह संभव है क्योंकि जावास्क्रिप्ट गतिशील रूप से टाइप किया गया है। मुझे नहीं लगता कि इसके अलावा कोई अन्य कारण है।

क्या ऐसा करने का सबसे अच्छा अभ्यास है? आईएमएचओ, मुझे ऐसा नहीं लगता, वास्तव में। मुझे लगता है कि जावा (और मैंने जावा का उल्लेख क्यों किया क्योंकि आपने कहा कि आपके पास कुछ पृष्ठभूमि है) सरणी डेटा प्रकारों को प्रतिबंधित करता है (जैसा कि कई भाषाओं में) आंशिक रूप से है क्योंकि यह क्लीनर है और चिंताओं को अलग करता है। मुझे लगता है कि एक डेटा प्रकार में जावास्क्रिप्ट में वैरिएबल/अन्य ऑब्जेक्ट्स को सीमित करना आमतौर पर डायनामिक टाइपिंग की "क्षमता" पर ध्यान दिए बिना एक अच्छा विचार है।

संपादित

जोनाथन Lonowski ने बताया कि एक अच्छा आवेदन जो समझ में आता है, Function.prototype.apply में है। ऐसा इसलिए है क्योंकि आप डेटा की एक सरणी में गुजर सकते हैं, जिनमें से सभी के अलग-अलग प्रकार हो सकते हैं। यह एक अच्छी स्थिति है जहां यह समझ में आएगा कि जावास्क्रिप्ट में एरे जैसे वस्तुओं में गतिशील टाइपिंग होगी।

+1

... और हर जगह जब आप tuples के लिए 'Array' का उपयोग करते हैं। – Bergi

+0

@ बरगी, हाँ काफी मेला। मैंने अभी तक कई उत्पादन उपयोग मामलों को नहीं देखा है, जहां विभिन्न प्रकार के डेटा युक्त टुपल्स एक फोकल पॉइंट होते हैं, जब तक कि आप शायद एल्गोरिदम विकास या सॉर्ट (node.js, शायद) के साथ काम नहीं कर रहे हों। –

+0

सीएसवी लाइनें एक अच्छा दिन-प्रतिदिन उदाहरण हैं। और [कुंजी, मूल्य] -उपल्स का उपयोग पूरे ES6 पर किया जाता है। – Bergi

2

वास्तव में, यह जावा में posible है, आप यह घोषणा करने के लिए है।

3

हालांकि यह संभव है सरणी में विभिन्न डेटा प्रकार संग्रहीत करने के लिए, यह एक गरीब प्रोग्रामिंग शैली माना जाता है क्योंकि परिभाषा से किसी सरणी सजातीय डेटा संरचना है।

कैसे एक समान तरीके से संभाल होगा ऐसी सरणी:

  • क्रमबद्धता
  • मेमोरी उपयोग
  • एल्गोरिदम अर्थात छँटाई के लिए
    [ 2.5 , [ 1, 2 ], ["a", "b", "c"], {min: 2, max: 5} ] 
    

    अधिकतम मूल्य

यह विभिन्न प्रकार के सरणी में प्राकृतिक प्रतीत नहीं होता है, है ना?

संबंधित मुद्दे