set、map、weakSet、weakMap

复制代码
// set:天然去重属性,引用类型除外
const s:Set<number> = new Set([1,2,2,3])
// console.log(s); //1,2,3
s.add(4) // 添加
s.delete(1) // 删除
s.has(2) // 判断是否有2
s.clear() // 清空
// 支持的遍历方法
s.entries
s.forEach
s.keys
s.values
// set有迭代器属性
for (const element of s) {
  
}

//map:键值对形式,键值可以引用类型格式
let m:Map<string,any> = new Map([['1',{name:'bai'}]])
// 跟set一样的
m.set('2',{age:24}) // 添加
m.get('1') // 获取值
m.delete('1') // 删除
m.has('2') // 判断是否有2
m.clear() // 清空
// 支持的遍历方法
m.entries
m.forEach
m.keys
m.values
// set有迭代器属性
for (const element of m) {
  
}

// weakMap:是弱引用的意思,要求键值一定是引用类型,不会计入垃圾回收机制
const wm:WeakMap<object,any> = new WeakMap()
let obj:any = {name: 'bai'} // 根据垃圾回收机制,此次引用次数为1次
let anlph = obj // 此时引用次数为2次
wm.set(obj,'234') // 但是weakMap不会添加引用次数,因此当前2次的引用被消除后,将获取不到值
console.log(wm.get(obj)); // '234'
obj = null // 消除引用次数 -1
anlph = null // 消除引用次数 -1
console.log(wm.get(obj)); // undefined
// 同时因为v8回收机制需要200毫秒左右,当你console.log(wm)显示还有值,因此weakMap禁止被遍历
// wm.forEach // 禁止

// weakSet同理有弱引用性、禁止被遍历、要求一定是引用类型,
const ws:WeakSet<object> = new WeakSet()
let a:any = {age:11}
ws.add(a)
console.log(ws.has(a)); // true
a = null
console.log(ws.has(a)); // 当引用对象消失时,ws内的值也消失了
复制代码

 

posted on   ChoZ  阅读(4)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示