Set

Set:

一种新的数据结构,set中的值是唯一的,是数据结构中的集合

声明方式:

const set = new Set([1,2,2,3,4])
console.log(set) // {1, 2, 3, 4}

常用方法:

set.add(5) // 添加元素
set.add(6).add(7) // 支持链式操作
set.delete(1) // 删除元素,如果元素是个对象要特别注意
set.clear() // 清空
set.has(2) // 判断set中是否有某个元素
set.size // set的大小

遍历:

跟数组类似,可以用for...of  forEach等,set中的键和值是一样的

应用场景

// 数组去重
const arr = [1,2,3,3,4,4]
const set = new Set (arr)
console.log([...set]) // [1, 2, 3, 4]
//合并数组并去重
const arr1 = [1,2,3,4]
const arr2 = [3,4,5,6]
const set = new Set([...arr1,...arr2])
console.log([...set]) // [1, 2, 3, 4, 5, 6]
//取交集
const arr1 = [1,3,4,5]
const arr2 = [4,5,6,7,8,9]
const set1 = new Set(arr1)
const set2 = new Set(arr2)
const res = arr1.filter( item => set2.has(item))
console.log(res) // [4,5] 
//取差集
const arr1 = [1,3,4,5]
const arr2 = [4,5,6,7,8,9]
const set1 = new Set(arr1)
const set2 = new Set(arr2)
const res1 = arr1.filter( item => !set2.has(item))
const res2 = arr2.filter( item => !set1.has(item))
console.log(res1) // [1, 3]
console.log(res2) // [6, 7, 8, 9]
console.log([...res1,...res2]) // [1, 3, 6, 7, 8, 9]

WeakSet:

可以在WeakSet中临时存放一些对象,对对象绑定一些相关信息,当对象销毁时,WeakSet中的引用也会自动消失

WeakSet和Set的区别

WeakSet只能存放对象,Set可以存放任意类型

Set可以循环遍历,WeakSet不可以

WeakSet是一种弱引用,不会被垃圾回收机制考虑

posted @ 2020-07-30 14:13  Momentt  阅读(115)  评论(0)    收藏  举报