为了账号安全,请及时绑定邮箱和手机立即绑定

如何为JavaScript Set自定义对象相等性

如何为JavaScript Set自定义对象相等性

慕容708150 2019-08-13 14:06:47
如何为JavaScript Set自定义对象相等性新的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)?
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

平等关系的定制可能是不可能的

下面的代码概述了计算效率(但内存昂贵)的解决方法

class GeneralSet {

    constructor() {
        this.map = new Map();
        this[Symbol.iterator] = this.values;
    }

    add(item) {
        this.map.set(item.toIdString(), item);
    }

    values() {
        return this.map.values();
    }

    delete(item) {
        return this.map.delete(item.toIdString());
    }

    // ...}

每个inserted元素都必须实现toIdString()返回string的方法。当且仅当它们的toIdString方法返回相同的值时,才认为两个对象是相等的。


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 1267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号