2013-03-26 9 views
7

के साथ ऑब्जेक्ट में कुंजी की संख्या की संख्या मैं जानना चाहता हूं कि मेरे कॉफ़ीस्क्रिप्ट ऑब्जेक्ट में कितनी कुंजी हैं।कॉफ़ीस्क्रिप्ट

मैं js में इस के साथ यह कर सकते हैं:

Object.keys(obj).length

वहाँ Coffeescript में ऐसा करने का कोई तरीका है?

उत्तर

13
Object.keys(obj).length 

यह coffeescript

see example

+1

नोट यह केवल जो ब्राउज़र ECMAScript 5 मानक लागू में समर्थित है में प्रयोग किया जाता है की तरह उपयोग कर सकते हैं। उदाहरण के लिए आईई 8 और इससे पहले इस पर चकित होंगे। क्रॉस ब्राउज़र वाले कॉफ़ीस्क्रिप्ट विशिष्ट समाधान के लिए नीचे मेरा उदाहरण देखें। – jondavidjohn

9

में एक ही तरह से काम करना चाहिए आप लीगेसी ब्राउज़र समर्थन के बारे में चिंतित

Object.keys(obj).length 

एक ECMAScript 5 समाधान

लेकिन अगर है, तो आप आईई 8 और ईरली का समर्थन करना चाहते हैं एर इस एक काफी विनीत Coffeescript विशिष्ट समाधान

(k for own k of obj).length 

यह CoffeeScript के Comprehension Syntax का इस्तेमाल करता है कुंजी

keys = (k for own k of obj) # Array of keys from obj 

की एक सरणी का निर्माण करने और फिर उस सरणी

Example with compiled JavaScript

+0

दूसरा कोड मेरे लिए रहस्यमय दिखता है। क्या मुझे थोड़ा और स्पष्टीकरण मिल सकता है? – Jokester

+1

@ जोकेस्टर ने उदाहरण को और समझने में मदद के लिए कुछ विवरण और लिंक जोड़े। – jondavidjohn

0

मैं पर लंबाई कहता है thed keys प्रोटोटाइप फ़ंक्शन बनाएं:

Object.defineProperty Object.prototype, 'keys', 
    enumerable : false, 
    writable : true, 
    value: -> 
     return (key for own key of @) 

ताकि मैं सिर्फ इस

nodes_Ids: -> 
    return _nodes_By_Id.keys() 

जो इस परीक्षण

it 'add_Node',-> 
    visGraph = Vis_Graph.ctor() 
    visGraph.add_Node('a').nodes.assert_Size_Is(1) 
    visGraph.add_Node('a').nodes.assert_Size_Is(1) 
    visGraph.add_Node( ).nodes.assert_Size_Is(1) 
    visGraph.add_Node(null).nodes.assert_Size_Is(1) 
    visGraph.add_Node('b').nodes.assert_Size_Is(2) 
    visGraph.nodes_Ids() .assert_Contains  ('a') 
    visGraph.nodes_Ids() .assert_Contains  ('b') 
    visGraph.nodes_Ids() .assert_Not_Contains ('c') 
संबंधित मुद्दे