2012-03-26 11 views
18

यहाँ मैं क्या कर रहा हूँ के उदाहरण है:जावास्क्रिप्ट सरणी के अंदर सरणी - मैं कैसे कॉल कर सकते हैं बच्चे सरणी नाम

var size = new Array("S", "M", "L", "XL", "XXL"); 
    var color = new Array("Red", "Blue", "Green", "White", "Black"); 
    var options = new Array(size, color); 

मैं एक पाश का चयन प्रपत्र थिंगी जो अच्छा काम कर रहा हूँ, लेकिन मैं लाने के लिए चाहते हैं इस मामले में - ऐरे बच्चे का नाम - आकार या रंग। जब मैं सतर्क कर रहा हूं (विकल्प [0]) मुझे सरणी के पूरे तत्व मिलते हैं, लेकिन कुछ विशिष्ट मामले के लिए, मैं केवल सरणी नाम प्राप्त करना चाहता हूं, जो आकार/रंग जैसा है मैंने पहले ही कहा है। क्या इसे हासिल करने का कोई तरीका है? धन्यवाद

+5

नए ऐरे का उपयोग न करें, इसके बजाय [] का उपयोग करें। – antonjs

+0

और वह क्यों है :)? – Malyo

+0

यहां अंतर बीटीडब्ल्यू [[] 'और 'नया ऐरे' http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-ar/1273936# 1273936 – antonjs

उत्तर

22

मैं इस तरह एक वस्तु बन जाएगा:

for (var key in options) { 
    alert(key); 
} 

पुनश्च::

var options = { 
    size: ["S", "M", "L", "XL", "XXL"], 
    color: ["Red", "Blue", "Green", "White", "Black"] 
}; 


alert(Object.keys(options)); 

individualy कुंजी का उपयोग करने के लिए जब आप एक नई सरणी वस्तु बनाने new Array उपयोग का उपयोग नहीं करते [] बजाय।

+0

यह थोड़े काम करता है , लेकिन यह सभी नाम प्रदर्शित करता है, मैं उन्हें व्यक्तिगत रूप से कैसे एक्सेस करूं (मुझे इसे बाद में लूप के अंदर चाहिए) – Malyo

+0

बस इस कोड को निष्पादित करें: '(विकल्प में var कुंजी) { अलर्ट (कुंजी); } ' – antonjs

+0

एमडीएन (मोज़िला) सुझाव देता है कि इनके लिए सरणी पर उपयोग नहीं किया जाना चाहिए -" for..in का उपयोग एक ऐरे पर फिर से करने के लिए नहीं किया जाना चाहिए जहां इंडेक्स ऑर्डर महत्वपूर्ण है। ऐरे इंडेक्स पूर्णांक नामों के साथ केवल समेकित गुण हैं और हैं अन्यथा सामान्य वस्तु गुणों के समान। " - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in – rpeg

2

options सरणी के दो सदस्यों size और color नामक चर से आए हैं।

उन्हें जरूरी नहीं कहा जाता है कि विशेष रूप से, कोई भी चर उस सरणी को इंगित कर सकता है।

var notSize = size; 

console.log(options[0]); // It is `size` or `notSize`? 

एक बात आप कर सकते हैं

var options = { 
    size: size, 
    color: color 
} 

तो फिर तुम options.size या options.color यहां पहुंच सकता है वहाँ के बजाय किसी चीज़ का इस्तेमाल होता है ...।

2

आप नहीं कर सकते। सरणी का नाम नहीं है।

आपके पास सरणी के दो संदर्भ हैं, एक चर में और दूसरा तीसरा सरणी में है।

किसी दिए गए ऑब्जेक्ट के लिए मौजूद सभी संदर्भों को खोजने का कोई तरीका नहीं है।

यदि नाम महत्वपूर्ण है, तो उसे डेटा के साथ स्टोर करें।

var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' }; 
var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' }; 
var options = [size, color]; 

जाहिर है आप मौजूदा कोड है जो डेटा तक (जब से तुम अब options[0][0] के बजाय options[0].data[0] है, लेकिन आप भी options[0].name है) को संशोधित करना होगा।

+0

'मौजूद सभी संदर्भों को खोजने का कोई तरीका नहीं है' - गलत लगता है, क्षमा करें Quentin। आप किसी ऑब्जेक्ट में गुणों के माध्यम से लूप कर सकते हैं कि वहां क्या है। – dmp

+1

@ डैनप - आपको * हर * ऑब्जेक्ट के माध्यम से लूप करना होगा, जिसमें बंद होने में लपेटा गया था। यह मानते हुए कि यह कोड एक फ़ंक्शन में है, मुझे इसमें घोषित सभी चर खोजने के लिए किसी भी तरह से अवगत नहीं है (यदि यह तब नहीं था तो 'var color'' window.color' के रूप में नहीं होना चाहिए) – Quentin

1

हां यह है। आप

alert(options[0][0]) 

उपयोग कर सकते हैं रंग "लाल"

0

पाने के लिए उस मामले आप नहीं करना चाहते हैं में आकार "एस"

या

alert(options[0][1]) 

पाने के लिए size और color किसी सरणी के अंदर डालें, लेकिन किसी ऑब्जेक्ट में

var options = { 
    'size': size, 
    'color': color 
    }; 

बाद में आप द्वारा

var keys = Object.keys(options); 
1

चाबियों का सेट का उपयोग कर सकते आप सरणियों (बहुआयामी) की एक सरणी बनाया है, इसलिए विकल्प [0] इस मामले में आकार सरणी है। आपको बच्चे के पहले तत्व को संदर्भित करने की आवश्यकता है, जो आपके लिए है: विकल्प [0] [0]।

यदि आप सभी प्रविष्टियों के माध्यम से लूप करना चाहते हैं तो आप for .. in ... सिंटैक्स का उपयोग कर सकते हैं जिसका वर्णन here है।

var a = [1,2,4,5,120,12]; 
for (var val in t) { 
    console.log(t[val]); 
} 

var b = ['S','M','L']; 
var both = [a,b]; 

for (var val in both) { 
    for(val2 in both[val]){console.log(both[val][val2])} 
} 
5

आप उपयोग कर इस तरह key मूल्य कुछ प्राप्त कर सकते हैं:

var size = new Array("S", "M", "L", "XL", "XXL"); 
var color = new Array("Red", "Blue", "Green", "White", "Black"); 
var options = new Array(size, color); 

var len = options.length; 
for(var i = 0; i<len; i++) 
{ 
for(var key in options[i]) 
    { 
     alert(options[i][key]) 
    } 

} 

यहाँ देखें: http://jsfiddle.net/8hmRk/8/

+0

वैसे आपका उदाहरण साथी काम नहीं करता है, यह सभी सरणी सरणी मानों को अलर्ट करता है, न कि सरणी सरणी नाम – Malyo

0

सरणी किसी भी अन्य वस्तु की तरह है। यदि आप चाहें तो आप इसे एक नाम दे सकते हैं।

var size = new Array("S", "M", "L", "XL", "XXL"); 
var color = new Array("Red", "Blue", "Green", "White", "Black"); 
var options = new Array(size, color); 
color.name = "color"; 
size.name = "size"; 
options[0].name == "size" 
>true 
संबंधित मुद्दे