2013-08-04 9 views
5

मुझे यकीन है कि वे क्या कहा जाता है नहीं कर रहा हूँ, लेकिन क्या मेरा मतलब यह है:'नाम' सरणी की लंबाई प्राप्त करना?

array["water"] = 50; 
array["fire"] = 30; 

लंबाई

मैं कैसे देख सकते हैं कि कितने गुण मैं सरणी में है 2 यहाँ होना चाहिए? array.length = (मैं चीजों के सभी प्रकार की कोशिश कर रहा था और मुझे लगता है कि मैं वास्तव में यहाँ सरल कुछ याद कर रहा हूँ काम नहीं करता है ..

आपकी मदद

+3

यह एक सरणी नहीं है, यह एक वस्तु है। – JJJ

+2

@ जुहाना: मैं * एक ऐरे हो सकता था, लेकिन [यह नहीं होना चाहिए] (http://andrewdupont.net/2006/05/18/javascript-associative-arrays- पर विचार- harmful/) – Bergi

उत्तर

6

आप को Object.keys() इस्तेमाल कर सकते हैं के लिए धन्यवाद ,,

Object.keys(array).length 

या यदि आप Object.keys() नहीं है ECMAScript 3 को लक्षित कर रहे हैं या नहीं तो फिर आप कुंजी मैन्युअल रूप से भरोसा कर सकते हैं: चाबियों का एक सरणी प्राप्त है, फिर उन्हें गिनती

var length = 0; 
for (var key in array) { 
    if (array.hasOwnProperty(key)) { 
     ++length; 
    } 
} 

हालांकि, इस दृष्टिकोण के साथ कुछ किनारे के मामले हैं, जो आपके द्वारा लक्षित ब्राउज़र पर निर्भर करते हैं, इसलिए Mozilla's polyfill for Object.keys() का उपयोग करना एक अच्छा विचार हो सकता है।

+0

Woot, धन्यवाद। वास्तव में मुझे क्या चाहिए, परेशानी के लिए खेद है –

+0

@rid यह 'ऑब्जेक्ट.प्रोटोटाइप.hasOwnProperty.call (सरणी, कुंजी)' करने के लिए बेहतर हो सकता है, 'अगर सरणी में एक संपत्ति है' हैऑनप्रॉपर्टी ' –

+0

@ पॉल्स, अच्छी तरह से , कुछ और किनारे के मामले हैं, लेकिन वे सभी [मोज़िला के पॉलीफिल] द्वारा प्रबंधित किए जाते हैं (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys# संगतता)। उत्तर अपडेट किया गया। – rid

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