用Coffeescript计算对象中的键数

Count number of keys in object with Coffeescript

本文关键字:对象 Coffeescript 计算      更新时间:2023-09-26

我想知道我的coffeescript对象中有多少个键

我可以在js中这样做:

Object.keys(obj).length

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

Object.keys(obj).length

在coffeescript

中也是一样的

看到示例

如果你担心旧浏览器的支持

Object.keys(obj).length

是ECMAScript 5解决方案

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

(k for own k of obj).length

这使用CoffeeScript的理解语法来构建一个键数组

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

然后调用数组的length

JavaScript编译示例

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