当前位置: 首页 > article >正文

学习typeScript(weakMap,weakSet,set,map)

在es5的时候常用的Array object ,在es6又新增了两个类型,Set和Map,类似于数组和对象。

1.set

集合是由一组无序且唯一(即不能重复)的项组成的,可以想象成集合是一个既没有重复元素,也没有顺序概念的数组

  • 属性

    size:返回字典所包含的元素个数

  • 操作方法

    1. add(value):添加某个值,返回 Set 结构本身。

    2. delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

    3. has(value):返回一个布尔值,表示该值是否为 Set 的成员。

    4. clear():清除所有成员,无返回值。

    5. size: 返回set数据结构的数据长度

let set:Set<number> = new Set([1,2,3,4])

set.add(5)

set.has(5)

set.delete(5)

set.size //4

去重

let arr = [...new Set([1,1,1,2,2,3,4,5,5,5,5])]

console.log(arr); //[ 1, 2, 3, 4, 5 ]

2.Map

它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适

let obj = { name: '小满' }
let map: Map<object, Function> = new Map()

map.set(obj, () => 123)

map.get(obj)

map.has(obj)

map.delete(obj)

map.size

操作方法同set

3.WeakSet 和 WeakMap

Weak 在英语的意思就是弱的意思,weakSet 和 weakMap 的键都是弱引用,不会被计入垃圾回收,我们来演示一下。

首先obj引用了这个对象 + 1,aahph也引用了 + 1,wmap也引用了,但是不会  + 1,应为他是弱引用,不会计入垃圾回收,因此 obj 和 aahph 释放了该引用 weakMap 也会随着消失的,但是有个问题你会发现控制台能输出,值是取不到的,应为V8的GC回收是需要一定时间的,你可以延长到500ms看一看,并且为了避免这个问题不允许读取键值,也不允许遍历,同理weakSet 也一样

let obj:any = {name:'小满zs'} //1
let aahph:any = obj //2
let wmap:WeakMap<object,string> = new WeakMap()

wmap.set(obj,'爱安徽潘慧') //2 他的键是弱引用不会计数的

obj = null // -1
aahph = null;//-1
//v8 GC 不稳定 最少200ms

setTimeout(()=>{
    console.log(wmap)
},500)


http://www.kler.cn/a/3526.html

相关文章:

  • Linux中关于glibc包编译升级导致服务器死机或者linux命令无法使用的情况
  • Games104——渲染中光和材质的数学魔法
  • 二、vue智能Ai对话(高仿通义千问)流式进阶版
  • windows git bash 使用zsh 并集成 oh my zsh
  • 【ESP32】ESP32连接JY61P并通过WIFI发送给电脑
  • 【回忆迷宫——处理方法+DFS】
  • 动态规划---线性dp和区间dp
  • STM32外设-定时器详解
  • QT之QSysInfo(查看电脑信息)
  • 【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解
  • 如何成为优秀的程序员
  • 并发粗略测算
  • 6.3 归并排序Mergesort
  • 【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码
  • 51单片机8*8 LED点阵实现原理讲解
  • echarts地图不同地区设置不同的颜色
  • 手机验证发送及其验证(基于springboot+redis)保姆级
  • Docker【基本使用】
  • 你还不会递归?告别困惑,我来教你
  • 多线程(三):Thread 类的基本属性
  • USB键盘实现——字符串描述符(四)
  • JNI原理及常用方法概述
  • 【软件测试】基础知识第一篇
  • 使用chatGPT实现数字自增动画
  • 数字信号处理_QA_2023_超长
  • [渗透教程]-004-嗅探工具-Nmap