7

我想知道我的咖啡脚本对象中有多少键。

我可以在 js 中做到这一点:

Object.keys(obj).length

有没有办法在 Coffeescript 中做到这一点?

4

3 回答 3

13
Object.keys(obj).length

它应该在咖啡脚本中以相同的方式工作

看例子

于 2013-03-26T05:16:50.307 回答
10

如果您担心旧版浏览器支持

Object.keys(obj).length

是一个 ECMAScript 5 解决方案

但是,如果您想支持 IE8 和更早版本,这是一个相当不显眼的 Coffeescript 特定解决方案

(k for own k of obj).length

这利用 CoffeeScript 的Comprehension Syntax来构建一个键数组

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 回答