Map 检查地图是否在coffeescript中没有元素的正确惯用方法是什么?

Map 检查地图是否在coffeescript中没有元素的正确惯用方法是什么?,map,coffeescript,Map,Coffeescript,因为一个代码示例胜过千言万语: console.log(@searchEnginesMap, {}, @searchEnginesMap == {}, @searchEnginesMap is {}, @searchEnginesMap.empty?, @searchEnginesMap.length) 返回: {} {} false false false undefined 获取此值的正确语法是什么?(或者我应该如何正确地检查是否有一个包含零元素的地图?) 编辑:额外学分: 如何比较这两

因为一个代码示例胜过千言万语:

console.log(@searchEnginesMap, {}, @searchEnginesMap == {}, @searchEnginesMap is {}, @searchEnginesMap.empty?, @searchEnginesMap.length)
返回:

{} {} false false false undefined
获取此值的正确语法是什么?(或者我应该如何正确地检查是否有一个包含零元素的地图?)

编辑:额外学分:

如何比较这两个词典以使它们相同(按值,而不是按引用):

所以我需要知道,在比较这些数据时,我可以使用什么来实现这些数据


提前谢谢。

这里没有咖啡脚本魔法解决方案。如果你想知道一个对象是否是空的,那么你必须数一数键。您可以使用:

或者您可以使用循环:

if (true for v of obj).length == 0
  # obj is empty
用于。。。循环版本的可以不费吹灰之力地包装在短路功能中

我可能会缩小并抓取下划线或Lodash,以便使用:

这也会解决你的第二个问题,因为你也会:


下划线演示:

我想说,lodash/下划线确实是更好的解决方案,而不是懦夫。已经完成的经过良好测试的代码总是比编写自己的程序更可取。@jcollum:很多人对添加更多依赖项抱有偏见(包括我,当依赖项试图接管或不必要地膨胀时)。我的周围已经有了
if Object.keys(obj).length == 0
  # obj is empty
if (true for v of obj).length == 0
  # obj is empty
if _(obj).isEmpty()
  # obj is empty
_(foo: "bar?q=%s", baz: "qux?q=%s").isEqual(baz: "qux?q=%s", foo: "bar?q=%s")
# true