在ECMA6 JS中设置对象的可比性

时间:2015-06-23 19:21:00

标签: javascript set comparator equality ecmascript-6

我一直在使用一套来存储和检索代表坐标的简单对象。

// Creates a point in hex coordinates
  function hexPoint(q, r) {
    this.q = q;
    this.r = r;
  }

我多次生成这些点,所以我有简单的坐标对来传递,但我希望能够以不存储重复坐标的方式存储它们。

ECMA 6 Set对象依赖于对测试对象相等性的引用,所以我想知道是否有办法为这个集合提供一个类似的函数,以便我可以允许它测试具有相同字段的新对象的相等性。否则,我还能做些什么来避免重新实现这个数据结构?

1 个答案:

答案 0 :(得分:0)

为什么不添加isEqual(otherPoint)?它可能看起来像:

function HexPoint(q, r) {
  this.q = q;
  this.r = r;
}

HexPoint.prototype.isEqual = function(otherPoint) {
  return this.q === otherPoint.q && this.r === otherPoint.r;
}

然后您可以使用

创建HexPoint的实例
var point = new HexPoint(...);
if (point.isEqual(someOtherPoint)) {
  ...
}

A similar Q&A指出尚未存在原生选项。