代码之家  ›  专栏  ›  技术社区  ›  AndreKR

JavaScript集合,我可以在其中保存对元素的引用

  •  2
  • AndreKR  · 技术社区  · 3 年前

    是否有一个数据结构,无论是内置在浏览器中还是从通用的npm包中,我可以在其中添加元素,但也可以保存对元素的引用,通过该引用我可以删除元素?

    代码中:

    let list = XXX();
    
    list.push(10);
    let ref1 = list.push(20);
    let ref2 = list.push(30);
    list.push(40);
    
    ref1.delete(); // or list.remove(ref1)
    ref2.delete(); // or list.remove(ref2)
    
    list.forEach(item => console.log(item));
    

    将打印

    10
    40
    
    1 回复  |  直到 3 年前
        1
  •  4
  •   Amadan    3 年前

    Map 具有 Symbol 按键适合:

    class RefMap extends Map {
      push(value) {
        const key = Symbol()
        this.set(key, value)
        return key
      }
    }
    
    let list = new RefMap();
    
    list.push(10);
    let ref1 = list.push(20);
    let ref2 = list.push(30);
    list.push(40);
    
    list.delete(ref1)
    list.delete(ref2)
    
    list.forEach(item => console.log(item));