7

私のcoffeescriptオブジェクトにいくつのキーがあるのか​​知りたいのですが。

私はjsでこれを使ってそれを行うことができます:

Object.keys(obj).length

Coffeescriptでこれを行う方法はありますか?

4

3 に答える 3

13
Object.keys(obj).length

それはcoffeescriptでも同じように機能するはずです

例を参照してください

于 2013-03-26T05:16:50.307 に答える
10

従来のブラウザのサポートが心配な場合

Object.keys(obj).length

ECMAScript5ソリューションです

ただし、IE8以前をサポートしたい場合、これはかなり目立たないCoffeescript固有のソリューションです。

(k for own k of obj).length

これは、CoffeeScriptの理解構文を利用してキーの配列を構築します

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

そして、その配列で長さを呼び出します

コンパイルされたJavaScriptの例

于 2013-09-25T22:49:27.090 に答える
0

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' )
于 2014-11-05T11:13:40.060 に答える