ECMAScript-新的数据结构Set

一、ECMAScript-新的数据结构Set
1. 一种新的数据结构

结构类似于数组,但是成员的值都是唯一的,没有重复的值。

let s = new Set([1, 2, 3, 2])
console.log(s) //  Set(3) {1, 2, 3}
2. 常用方法
// add
let s = new Set([1, 2, 3])
s.add('test')
console.log(s) // Set(4) {1, 2, 3, "test"}

// delete
s.delete('test')

// 清空
s.clear()

// has 是否包含某一个数值
s.has('test')

// 大小
s.size
3. 遍历
// 方式一
s.forEach( item => {
	console.log(item)
})
// 方式二
for of
4. 应用场景
// 1. 数组去重
let arr = [1, 2, 3, 4, 5, 1, 6]
let s = new Set(arr)
console.log(s)

// 合并去重
let arr1 = [1, 2, 3, 4]
let arr2 = [2, 3, 4, 5, 6]
let s = new Set([...arr1, ...arr2])
console.log(s)
console.log(...s) // 输出一个数组
console.log(Array.form(s)) // 也是一个数组

// 交集 set --> array
let arr1 = [1, 2, 3, 4]
let arr2 = [2, 3, 4, 5, 6]
let s1 = new Set(arr1)
let s2 = new Set(arr2)
let result = new Set(arr1.filter( item =>  s2.has(item)))
console.log(Array.from(result))

// 差集
let arr1 = [1, 2, 3, 4]
let arr2 = [2, 3, 4, 5, 6]
let s1 = new Set(arr1)
let s2 = new Set(arr2)
let result1 = new Set(arr1.filter( item =>  !s2.has(item)))
let result2 = new Set(arr2.filter( item =>  !s1.has(item)))
console.log([...result1, ...result2])
5. WeakSet
// WeakSet只是一个弱引用
// 与set之间的差别
// WeakSet里面只能添加对象
// WeakSet不可以遍历
// 应用场景:临时存储
let ws = new WeakSet()
// 添加一个对象
ws.add({
	name: 'zhangsan'
})
// 删除一个对象
// 这种方式是无法删除一个对象的
ws.delete({
 	name: 'zhangsan' 
})

// 这种可以
let obj1 = {name: 'zhangsan'}
ws.add(obj1)
ws.delete(obj1)
console.log(ws)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值