ES6学习笔记(十一)新的数据结构 Set

Set简介

Set类似数组

Set内的值都是唯一的,不会重复

Set方法

可以使用add添加元素,支持链式操作。

let a = new Set([1, 2, 3])
a.add('Faker').add('Bang')
console.log(a) // Set(5) {1, 2, 3, "Faker", "Bang"}

可以使用 delete() 方法删除元素

let a = new Set(['Faker', 'Bengi', 'Wolf'])
a.delete('Bengi')
console.log(a) // Set(2) {"Faker", "Wolf"}

clear()清空

let a = new Set(['Faker', 'Bengi', 'Wolf'])
a.clear('Bengi')
console.log(a) // Set(0) {}

has()查找是否包含某元素

let a = new Set(['Faker', 'Bengi', 'Wolf'])
console.log(a.has('Bengi')) // true
console.log(a.has('Clid')) // false

.size 查看长度

let a = new Set(['Faker', 'Bengi', 'Wolf'])
console.log(a.size) // 3

遍历

forEach()

let a = new Set(['Faker', 'Bengi', 'Wolf'])
a.forEach(item => {
    console.log(item)
    // Faker
    // Bengi
    // Wolf
});

for of (Set的keys和values是相同的,有别于数组)

let a = new Set(['Faker', 'Bengi', 'Wolf'])
for (let item of a.values()) {
    console.log(item)
    // Faker
    // Bengi
    // Wolf
}
for (let item of a.keys()) {
    console.log(item)
    // Faker
    // Bengi
    // Wolf
}
for (let item of a.entries()) {
    console.log(item[0], item[1])
    // Faker Faker
    // Bengi Bengi
    // Wolf Wolf
}

Set的应用

数组去重

let arr = [1, 2, 2, 3, 4, 5, 2]
let s = new Set(arr)
console.log([...s]) // (5) [1, 2, 3, 4, 5]

数组混合去重

let arr_1 = [1, 2, 2, 3, 4, 5, 2]
let arr_2 = [2, 3, 4, 4, 5, 6]
let s = new Set([...arr_1, ...arr_2])
console.log([...s]) // (6) [1, 2, 3, 4, 5, 6]

最后的显示用Array.from()也可以。

两数组的交集

let arr_1 = [1, 2, 2, 3, 4, 5, 2]
let arr_2 = [2, 3, 4, 4, 5, 6]
let s1 = new Set(arr_1)
let s2 = new Set(arr_2)
let result = new Set(arr_1.filter(item => s2.has(item)))
console.log([...result]) // (4) [2, 3, 4, 5]

两数组的差集

let arr_1 = [1, 2, 2, 3, 4, 5, 2]
let arr_2 = [2, 3, 4, 4, 5, 6]
let s1 = new Set(arr_1)
let s2 = new Set(arr_2)
let result1 = new Set(arr_1.filter(item => !s2.has(item)))
let result2 = new Set(arr_2.filter(item => !s1.has(item)))
console.log([...result1, ...result2]) // (2) [1, 6]

WeakSet()

WeakSet()和Set()类似,但WeakSet()只能储存对象。

可以使用add(),delete(),has()。

WeakSet()无法遍历。

WeakSet()中的元素为弱引用。不被垃圾回收机制所考虑。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值