ts:Set、Map

观看小满老师课程的随笔~

前言

  • 与 原生 js 中的原理和方法是相同的,这里只是用了 ts 中的 强类型

一、Set

  • 天然去重引用类型除外
  • 增删改查:addhasdeleteclear
  • 循环:forEachentrieskeysfor...of(内置的有iterator迭代器)
  • 获取长度: size
// 天然去重,引用类型除外
let set: Set<number> = new Set([1, 2, 3, 1, 2, 3, 4, 5]) // Set(5) {1, 2, 3, 4, 5}

// 引用类型无法去重
let set2 = new Set([1, 2, 3, 1, 2, 3, 4, 5, {a: 1}, {a: 1}]) // Set2(5) {1, 2, 3, 4, 5, Object, Object}

// 长度
console.log('size', set, set.size) // Set(5) {1, 2, 3, 4, 5} 5

// 增加
set.add(7)
console.log(set.has(7)) // true

// 删除
set.delete(5)
console.log(set.has(5)) // false

// 循环
set.forEach(item => {
  console.log('forEach', item)  // 1 2 3 4 7 各打印一次
})

// entries
console.log('entries-----', set.entries())  
// SetIterator {1 => 1, 2 => 2, 3 => 3, 4 => 4, 7 => 7}

// keys
console.log('keys------', set.keys())
// SetIterator {1, 2, 3, 4, 7}

// for of
for (let key of set) {
  console.log('for of---', key) // 1 2 3 4 7各打印一次
}

// 清空 
set.clear()
console.log(set)  // Set(0) {size: 0}

二、Map

  • key 可以是 引用类型,比如数组、对象
  • 增删改查:setgethasdeleteclear
  • 循环:forEachentrieskeysfor...of
  • 获取长度: size
let obj = {
  name: '小满'
}
let arr = [1, 2, 3, 4]

let map:Map<object, any> = new Map()

// 设置
map.set(obj, 123)
map.set(arr, '我是数组')

// 长度
console.log('size-------', map.size) // 2

// 获取
console.log(map.get(obj)) // 123

// 是否包含
console.log(map.has(obj)) // true

// 循环
map.forEach(item => {
  console.log('forEach-----', item)
  // 123
  // 我是数组
})

// entries、keys,打印见下图
console.log('entries--------', map.entries())
console.log('keys--------', map.keys())

// for of:打印见下图
for(let key of map) {
  console.log('for of----', key)
}

// 删除
map.delete(obj)
console.log('map-------', map) // Map(1) {Array(4) => '我是数组'}

// 清空
map.clear()
console.log('map-------', map) // Map(0) {size: 0}

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值