写点什么

前端之数据结构(三)集合和字典

用户头像
Augus
关注
发布于: 4 小时前
前端之数据结构(三)集合和字典

承接上文,继续,今天的集合和字典介绍。

集合

  • 一种无序且唯一的数据结构。

  • 在 ES6 中就有集合,名 Set。

  • 集合的常用操作:去重、判断某元素是否在集合中、求交集等等...

去重

const arr = [1,1,2,2,3,3]const arr2 = [...new Set(arr)]
console.log(arr2)// [1, 2, 3]
复制代码

判断元素是否在集合中

const set = new Set(arr)const has = set.has(2)
console.log(has)// true
复制代码

求交集

const set = new Set([1, 2])const set2 = new Set([2, 3])
const set3 = [...set].filter(item => set2.has(item))
console.log(set3)// [2]
复制代码

求差集

const set = new Set([1, 2])const set2 = new Set([2, 3])
const set3 = [...set].filter(item => !set2.has(item))
console.log(set3)// [1]
复制代码

Set 基本操作

  • 使用 Set 对象:new、add、delete、has、size

  • 迭代 Set:多种迭代方法、SetArray 互转、求交集/差集

  • 迭代 Setkey


const mySet = new Set([1,2,3,4,5])
for (let key of mySet) console.log(key);
// 1 2 3 4 5
复制代码


  • 迭代 Setvalue


const mySet = new Set([1,2,3,4,5])
for (let key of mySet.values) console.log(key);
// 1 2 3 4 5
复制代码


  • 迭代 Setkey 和 value


const mySet = new Set([1,2,3,4,5])
for (let [key, value] of mySet.entries())
console.log(key, value);
// 1 1 2 2 3 3 4 4 5 5
复制代码


我们可以发现 Setkey 和 value是一样的。


  • Set 转 Array


const mySet = new Set([1,2,3,4,5])
const myArr = [...mySet]
const myArr2 = Array.from(mySet)
复制代码

字典

  • 与集合类似,字典也是一种存储唯一值的数据结构,但它是以 键值对 的形式来存储。

  • 在 ES6 中就有集合,名 Map。

  • 字典的常用操作:键值对的增删改查。

Set 的基本操作

const map = new Map()// 增map.set('你', '好')// 删map.delete('你')map.clear() // 清空// 改map.set('你', '不好')// 查map.get('你')
复制代码


时间复杂度都是 O(1)。

求交集

function intersection(nums1: number[], nums2: number[]): number[] {    const map = new Map()    nums1.forEach(e => {        map.set(e, true)    })    const res = []    nums2.forEach(e => {        if(map.get(e)) {            res.push(e)            map.delete(e)        }    })    return res};
复制代码


今天就到这里,明天见!

用户头像

Augus

关注

爱瞎搞的软件开发工程师 2021.06.10 加入

某摸鱼集团

评论

发布
暂无评论
前端之数据结构(三)集合和字典