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