2013-03-26 11 views

Antwort

13
Object.keys(obj).length 

Es soll die gleiche Art und Weise in Coffeescript arbeitet

see example

+1

Beachten Sie in diesem Test verwendet wird dies nur in Browsern unterstützt, die ECMAScript 5-Norm zu implementieren. Zum Beispiel IE8 und früher wird daran ersticken. Siehe mein Beispiel unten für eine coffescript-spezifische Lösung, die Cross-Browser ist. – jondavidjohn

9

Wenn Sie Unterstützung für älteren Browser besorgt ist

Object.keys(obj).length 

eine ECMAScript 5 Lösung ist

Allerdings, wenn Sie wollen IE8 und Earli unterstützen er Dies ist eine ziemlich unauffällige Coffee spezifische Lösung

(k for own k of obj).length 

Dies nutzt Coffee der Comprehension Syntax eine Reihe von Tasten

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

zu bauen und dann ruft Länge auf diesem Array

Example with compiled JavaScript

+0

Der zweite Code sieht für mich geheimnisvoll aus. Kann ich ein wenig mehr erklären? – Jokester

+1

@Jokester Einige Details und Links wurden hinzugefügt, um das Beispiel besser zu verstehen. – jondavidjohn

0

I Erstellen Sie Thed keys Prototyp-Funktion:

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

, so dass ich es genauso wie verwenden diese

nodes_Ids: -> 
    return _nodes_By_Id.keys() 

welches

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') 
Verwandte Themen