亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為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 關注
  • 1323 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號