2013-03-26 15 views
7

ile nesnede bulunan sayıların sayısını sayın Coffeescript nesnesimde kaç tane anahtar olduğunu bilmek istiyorum.Coffeescript

ben js bu ile yapabilirsiniz: CoffeeScript bunu yapmanın bir yolu

Object.keys(obj).length

var mı? Eğer

Object.keys(obj).length 

Ancak eğer bir ECMAScript 5 Çözüm Eski tarayıcı desteği hakkında endişe duyuyorsanız

cevap

13
Object.keys(obj).length 

Bu CoffeeScript

see example

+1

Not Bu yalnızca ECMAScript 5 standardını uygulamak tarayıcılar desteklenen bu testte kullanılan bu

nodes_Ids: -> return _nodes_By_Id.keys() 

gibi kullanabilirsiniz, böylece. Örneğin IE8 ve daha önce bunun üzerinde boğulur. Çapraz tarayıcı olan coffeescript'e özel bir çözüm için aşağıdaki örneğe bakın. – jondavidjohn

9

aynı şekilde çalışması gerekir IE8 ve earli'yi desteklemek istiyorsunuz er bu oldukça mütevazi CoffeeScript belirli bir çözüm

(k for own k of obj).length 

Bu tuşların

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

bir dizi oluşturmak için CoffeeScript en Comprehension Syntax kullanır Ve daha sonra dizi

Example with compiled JavaScript

+0

İkinci kod bana gizemli görünüyor. Biraz daha fazla açıklama yapabilir miyim? – Jokester

+1

@Jokester Örneği daha fazla anlamanıza yardımcı olacak bazı ayrıntılar ve bağlantılar eklendi. – jondavidjohn

0

I uzunluğunu çağırır olduğunu thed keys prototype işlevini oluştur:

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

Sadece

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