2009-08-20 29 views
9

के लिए काम नहीं कर रहा है मुझे जावास्क्रिप्ट में दो सहयोगी सरणी को संयोजित करने में समस्या है। नीचे नमूना कोड है:संगत (जावास्क्रिप्ट में) सहयोगी सरणी

var firstArray = new Array(); 
firstArray.c1 = "sam"; 
firstArray.c2 = "kam"; 
var secArray = new Array(); 
secArray.c3 = "sam";  
secArray.c4 = "kam"; 
var res = firstArray.concat(secArray); 

क्या यह ज्ञात सीमा है?

इसे प्राप्त करने का सबसे अच्छा तरीका क्या है? बस Object कार्यक्षमता -

+0

वाह .... क्या मुझे पता चलेगा कि बिल्ली को मैं क्यों हटा रहा हूं ........ प्रश्न पूछना गलत है .. ?? कृपया अपना चेहरा दिखाएं ....... – RameshVel

+1

मैंने आपको वोट नहीं दिया, लेकिन मुझे लगता है कि यह इस तथ्य से कुछ करना होगा कि आप वास्तव में उस समस्या को समझा नहीं सकते जिसे आप देख रहे हैं –

+0

भाई मैंने दिया मुझे मिली सारी जानकारी ... (दो सहयोगी सरणी को जोड़ना) .. पर्याप्त नहीं है ... पीपीएल प्रश्न पूछें क्योंकि वे नहीं जानते .... सही .. – RameshVel

उत्तर

20

आप Array कार्यक्षमता का उपयोग नहीं कर रहे हैं। जावास्क्रिप्ट में, Object एक सहयोगी सरणी है - आप पूर्णांक द्वारा अनुक्रमित सरणी के लिए Array का उपयोग करते हैं। तो concat अपेक्षा के अनुरूप काम करेंगे आप

var firstArray = new Array(); 
firstArray.push("sam"); 
firstArray.push("kam"); 
var secArray = new Array(); 
secArray.push("sam");  
secArray.push("kam"); 
var res = firstArray.concat(secArray); 

किया है।

आप वास्तव में साहचर्य सरणियों मर्ज करना चाहते हैं, तो कार्य करें:

for (var attr in src_array) { dest_array[attr] = src_array[attr]; } 

निश्चित रूप से हो जाएगा ताकि dest_array जो src_array में समकक्ष में मौजूदा कुंजी के ऊपर लिख।

+0

के लिए कीमत ..यह वांछित है ... – RameshVel

2

इस प्रयास करें,

var firstArray = new Array("sam","kam"); 
var secArray = new Array("sam","kam"); 
var res = firstArray.concat(secArray); 
1

जावास्क्रिप्ट में सहयोगी सरणी नहीं है, इसमें ऑब्जेक्ट हैश है। आप एक सरणी बना रहे हैं और इसके कुछ गुणों को मान असाइन कर रहे हैं, सरणी में नहीं।

आपका कॉन्सट काम नहीं करेगा क्योंकि मान ऑब्जेक्ट गुण हैं। आपके पास जिस तरह से एक संक्षिप्त तरीका है, आपको दो वस्तुओं को गठबंधन करने की आवश्यकता होगी। यूयूआई, jQuery, और अन्य जावास्क्रिप्ट ढांचे केवल ऐसा करने के लिए सहायक तरीके प्रदान करते हैं।

1

कड़ाई से बोलते हुए वे सहयोगी सरणी नहीं हैं: वे शून्य नाम की सरणी हैं, अतिरिक्त नामित गुणों के साथ। उन गुणों को असाइन करना काम करता है क्योंकि सरणी जावास्क्रिप्ट में भी ऑब्जेक्ट्स हैं; लेकिन यह उन्हें एक सहयोगी सरणी नहीं बनाता है। हैश के रूप में उन्हें देखना बेहतर है।

concat जैसे ऐरे विधियों केवल ऑरे के संख्यात्मक रूप से अनुक्रमित तत्वों के साथ काम करेंगे, न कि वस्तुओं के गुणों के साथ - भले ही वे वस्तुएं सरणी हों।

1

जावास्क्रिप्ट में Arrays केवल संख्यात्मक कुंजी है। केवल वस्तुओं में गैर संख्यात्मक गुण हो सकते हैं। तो इसके बजाय इसे आजमाएं:

var firstArray = {}; 
firstArray.c1 = "sam"; 
firstArray.c2 = "kam"; 
var secArray = {}; 
secArray.c3 = "sam"; 
secArray.c4 = "kam"; 

for (var prop in secArray) { 
    if (secArray.hasOwnProperty(prop)) { 
     firstArray[prop] = secArray[prop]; 
    } 
} 
+0

क्यों अनावश्यकता? आप दूसरी सरणी में गुणों पर लूपिंग कर रहे हैं और फिर पहले लूप के मान के साथ दूसरी सरणी पर "hasOwnProperty" को कॉल कर रहे हैं। क्या आप पहली सरणी पर "hasOwnProperty" का परीक्षण करना चाहते थे? – doomspork

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