【发布时间】:2015-06-27 20:42:36
【问题描述】:
新的 ES 6 (Harmony) 引入了新的 Set 对象。 Set 使用的身份算法类似于=== 运算符,因此不太适合比较对象:
var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
如何自定义 Set 对象的相等性以便进行深度对象比较?有没有类似Javaequals(Object)的东西?
【问题讨论】:
-
“自定义平等”是什么意思? Javascript 不允许运算符重载,因此无法重载
===运算符。 ES6 set 对象没有任何比较方法。.has()方法和.add()方法仅在它是相同的实际对象或基元的相同值时才起作用。 -
“自定义相等”是指开发人员如何定义某些对象是否相等。
标签: javascript set ecmascript-harmony