【问题标题】:Test object equality in CoffeeScript?在 CoffeeScript 中测试对象相等性?
【发布时间】:2021-10-11 02:34:31
【问题描述】:

有没有一种简单的方法可以在 CoffeeScript 中测试对象的相等性?

或者更准确地说——测试两个对象的属性是否相同。

使用这些对象:

obj1 =
  name: "John Doe"
  age: "3.14"

obj2 =
  name: "John Doe"
  age: "3.14"

这如预期的那样评估为假:

obj1 == obj2

目前我使用的是Underscore's isEqual

【问题讨论】:

  • _.isEqual 有什么问题?您需要执行某种的深度平等。
  • Underscore 方法没有任何问题,但我会对速记语言功能感兴趣。

标签: javascript object comparison coffeescript equality


【解决方案1】:

不。 CoffeeScript 没有将此作为语言功能提供,因此使用像 Underscore.js 这样的库是您的最佳选择。

【讨论】:

    【解决方案2】:

    您可以使用旧的备用:

    JSON.stringify(obj1) == JSON.stringify(obj2)
    

    这将完成这项工作 - 但对于某些工作来说可能效率太低。

    您还可以将任意对象转换为一个类,并在该类上提供一个 equals 方法。

    class Person
      constructor: (@name, @age) ->
      
      equals: (other) -> @name == other.name && @age == other.age 
    

    【讨论】:

      最近更新 更多