javascript新增数据结构Set/Map/WeakSet/WeakMap

目录

一、Set

常用方法

使用场景 

二、WeakSet

三、Map

 常用方法

四、WeakMap 

一、Set

set中的元素不可以重复

常用方法

  1. 添加  add
    const set = new Set();
    
    set.add(1);
    set.add(100);
    set.add(50);
    set.add(1);
    set.add({});
    set.add({}); 
    
    console.log(set)   // { 1, 100, 50, {}, {} }

    在内存中对象保存的形式是内存地址,两个对象的内存地址不同

  2. 删除  delete
    const set = new Set();
    
    set.add(1);
    set.add(100);
    set.add(50);
    
    set.delete(100)
    
    console.log(set)   // { 1,50}
  3. 判断元素是否存在  has
    const set = new Set();
    
    set.add(1); 
    set.add(100);
    set.add(50);
    
    console.log(set1.has(330))  //false
    console.log(set1.has(100))  //true
  4. 获取元素个数   has
    const set = new Set();
    
    set.add(1); 
    set.add(100);
    
    console.log(set.size)  //2
  5. 清除所有元素   clear
    const set = new Set();
    
    set.add(1); 
    set.add(100);
    
    set.clear()
  6. 遍历  forEach、for...of...
    set.forEach((item) => {
      console.log(item);
    });
    
    for(let i of set){
        console.log(i)
    }

使用场景 

        数组去重

const arr = [22, 10, 3, 330, 1, 33];

const set1 = new Set(arr);

console.log(set1);

const newArr = Array.from(set1); //将set转换为数组

const newArr1 = [...set1]; //将set转换为数组

console.log(newArr, newArr1);

二、WeakSet

  • 元素不可以重复

  • 与Set的区别

    • 只能存放对象类型

    • 对元素的引用是弱引用,如果没有其他引用对某个对象进行引用,GC可以对该对象进行回收

  • 不可以遍历

三、Map

  • 存储映射关系

  • 允许对象类型作为key值

 常用方法

  1. 添加   set
    const map = new Map();
    
    const obj = { name: "lim" };
    
    map.set(obj, "a");
    map.set({}, "b");
    
    console.log(map);   // { { name: 'lim' } => 'a', {} => 'b' }
    
  2. 获取元素   get
    const map = new Map();
    
    const obj = { name: "lim" };
    
    map.set(obj, "a");
    map.set({}, "b");
    
    
    console.log(map.get(obj));  //a
  3. 删除   delete
    const map = new Map();
    const obj = { name: "lim" };
    
    map.set(obj, "a");
    map.set({}, "b");
    
    console.log(map);
    
    map.delete(obj);
    
    console.log(map);
  4. 获取元素的个数   size
  5. 判断元素是否存在    has
  6. 清除所有元素   clear
  7. 遍历    forEach、for...of...
    map.forEach((item, key) => {
      console.log(item, key);
    });
    
    
    for (let i of map) {
      console.log(i);
    }
    
    

    四、WeakMap  

  • 以键值对存在

  • WeakMap 的key只能是对象

  • key对对象的引用是弱引用,如果没有其他引用对某个对象进行引用,GC可以对该对象进行回收

  • 方法

    • set 添加

    • get 获取某个值

    • has

    • delete

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值