2010-08-24 10 views
9
var array1 = {}; 

array1['one'] = new Array(); 
array1['one']['data'] = 'some text'; 
array1['one']['two'] = new Array(); 
array1['one']['two']['three'] = new Array(); 
array1['one']['two']['three']['data'] = 'some other text'; 

$.each(array1, function(key1, value1){ 
    $.each(value1['two']['three'], function(key1, value1){ 
     document.write('test'); 
    } 
}); 

सबकुछ काम करता है, सिवाय इसके कि यह दस्तावेज़.write पर नहीं मिलता है। किसी को भी एक विचार क्यों?jquery.each multidimensional array

+1

उन हैं * * नहीं ** Arrays आप वहां उपयोग कर रहे हैं, लेकिन सामान्य वस्तुओं। 'नया ऐरे() 'लेकिन' नया ऑब्जेक्ट()' (या केवल "खाली" ऑब्जेक्ट के लिए '{}' का उपयोग न करें)। – RoToRa

उत्तर

8

ध्यान दें कि सरणी() प्रतिस्थापन के साथ यहाँ कुंजी है एक ही बात लिखने के लिए याद आ रही ')'

var array1 = {}; 

array1['one'] = new Object(); 
array1['one']['data'] = 'some text'; 
array1['one']['two'] = new Object(); 
array1['one']['two']['three'] = new Object(); 
array1['one']['two']['three']['data'] = 'some other text'; 

$.each(array1, function(key1, value1) { 
    $.each(value1['two']['three'], function(key1, value1) { 
     document.write('test'); 
    }); 
}); 

और एक और तरीका है: अपने ऑब्जेक्ट संदर्भ के लिए)

लिखने पर (छोटे Tweek
var array1 = {}; 

array1.one = new Object(); 
array1.one.data = 'some text'; 
array1.one.two = new Object(); 
array1.one.two.three = new Object(); 
array1.one.two.three.data = 'some other text'; 


$.each(array1, function(key1, value1) { 
    $.each(value1['two']['three'], function(key1, value1) { 
     document.write('test' + array1.one.data); 
    }); 
}); 

और अंत में, पदावनत नई वस्तु() प्रतिस्थापन के साथ:

var array1 = {}; 

array1['one'] = {} 
array1['one']['data'] = 'some text'; 
array1['one']['two'] = {}; 
array1['one']['two']['three'] = {}; 
array1['one']['two']['three']['data'] = 'some other text'; 

$.each(array1, function(key1, value1) { 
    $.each(value1['two']['three'], function(key1, value1) { 
     document.write('test'); 
    }); 
}); 

संपादित करें: कुछ मजेदार बुद्धि ज अपने सरणी, और क्यों आप वस्तु घोषणा में तार हो सकता है तुम्हारे पास है के रूप में:

var array1 = {}; 
var fun="four"; 
array1.one = {}; 
array1.one.data = 'some text'; 
array1.one.two = {}; 
array1.one.two.three = {}; 
array1.one.two.three.data = 'some other text'; 
array1.one.two[fun] = {}; 
array1.one.two[fun].data=' howdy'; 

$.each(array1, function(key1, value1) { 
    $.each(value1.two.three, function(key1, value1) { 
     document.write('test'+array1.one.two[fun].data+ ":"+key1+":"+value1); 
    }); 
}); 

उत्पादन पिछले है: "परीक्षण कैसे हो: डेटा: कुछ अन्य पाठ"

+1

ठीक है, यह वास्तव में एक सरणी नहीं है, लेकिन वैसे भी मजेदार :) बुद्धि एच आपकी सरणी 1 वस्तु! –

+0

आप इसके साथ बहुत मज़ेदार हैं। :) –

+1

मैं इस ऑब्जेक्ट सेट को घोषित करने के लिए और अधिक "मजेदार" तरीके पोस्ट करने का विरोध करता हूं :) –

1

दस्तावेज़.लिखें के रूप में आप एक सिंटैक्स त्रुटि है काम नहीं कर रहा है, तो कोड प्रवाह कभी नहीं इसे करने के लिए हो जाता है - आप अपने each के अंत में एक और ब्रैकेट की जरूरत है, यानी

$.each(array1, function(key1, value1){ 
    $.each(value1['two']['three'], function(key1, value1){ 
     document.write('test'); 
    }) 
}); 

आप तो जावास्क्रिप्ट के साथ कोई गैर-मामूली काम करने जा रहा है, मैं अत्यधिक अनुशंसा करता हूं कि आप Firebug स्थापित फ़ायरफ़ॉक्स का उपयोग करें - यह कंसोल इन प्रकार की त्रुटियों को हाइलाइट करता है जो अन्यथा आपको महसूस किए बिना असफल हो जाते हैं, जिससे आप विश्वास कर सकते हैं कि सब ठीक काम कर रहा है ।

+1

हां प्लेटफॉर्म पर, या कोई अन्य ब्राउज़र, लेकिन कम से कम त्रुटि विवरण कैप्चर करें वेबपृष्ठ त्रुटि विवरण जैसा कि मैंने आईई विंडो में त्रुटि नोटेशन पर क्लिक करके स्टेटस बार में डबल क्लिक करके किया है: उपयोगकर्ता एजेंट: मोज़िला/4.0 (संगत; एमएसआईई 7.0; विंडोज एनटी 5.1; ट्राइडेंट/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; एमडीडीआर; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) टाइमस्टैम्प: मंगलवार, 24 अगस्त 2010 15:28:09 यूटीसी संदेश: अपेक्षित ')' –

+1

जो अभी भी दस्तावेज़ को नहीं दबाता है। जैसा कि आप यहां देखते हैं: jsfiddle .net/yPYWd –

1

आप ) को दूसरे each में याद करते हैं।

+1

जो अभी भी दस्तावेज़ को नहीं दबाता है। जैसा कि आप यहां देखते हैं: http://jsfiddle.net/yPYWd/ –

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