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对象的等式比较以进行深度对象比较?有没有类似于Java的equals(Object)的东西?
ES 6(Harmony)引入了新的Set对象。Set使用的身份算法类似于===
运算符,因此不太适合比较对象。
var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
var map = new Map<string,string>();
map.set(JSON.stringify({"A":2} /*string of object as key*/), "Worked");
console.log(map.get(JSON.stringify({"A":2}))||"Not worked");
工作了
===
操作符进行重载。ES6集合对象没有任何比较方法。.has()
方法和.add()
方法仅在它们是同一个实际对象或者原始值相同时起作用。 - jfriend00