JavaScript-Set对象
# Set对象
提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的集合实现了 iterator
接口,所以可以使用扩展运算符
和for...of...
进行遍历
集合的属性和方法:
- size 返回集合的元素个数
- add 增加一个新元素,返回当前集合
- delete 删除元素,返回 boolean 值
- has 检测集合中是否包含某个元素,返回 boolean 值
# 基本用法
创建Set
const set = new Set()
1向Set添加元素(如果添加相等的元素,则只会保存第一个元素)
set.add('a')
1删除由其值指定的元素(删除某个键,返回true。如果删除失败,返回false。)
set.delete('a')
1如果值存在则返回 true
set.has('a')
1返回元素计数
set.size
1清空数组
set.clear()
1
# Set应用
数组去重
let arr = [1,2,3,4,5,4,3,2,1] //1.数组去重 let result = [...new Set(arr)] console.log(result)//[ 1, 2, 3, 4, 5 ]
1
2
3
4并集
let a = new Set([1,2,3]) let b = new Set([4,5,6]) let union = new Set([...a, ...b]) console.log(union)//{ 1, 2, 3, 4, 5,6 }
1
2
3
4交集
let a = new Set([1,2,3]) let b = new Set([4,3,2]) let intersect = new Set([...a].filter(x => b.has(x))) console.log(intersect)// {2,3}
1
2
3
4差集
let a = new Set([1,2,3]) let b = new Set([4,3,2]) let difference = new Set([...a].filter(x => !b.has(x))) console.log(difference)//{1}
1
2
3
4
# 遍历操作
Set.prototype.keys()
:返回键名的遍历器Set.prototype.values()
:返回键值的遍历器Set.prototype.entries()
:返回键值对的遍历器Set.prototype.forEach()
:使用回调函数遍历每个成员
let set = new Set(['red', 'green', 'blue']);
// Set.prototype.keys():返回键名的遍历器
for (let item of set.keys()) {
console.log(item);
}
// red
// green
// blue
// Set.prototype.values():返回键值的遍历器
for (let item of set.values()) {
console.log(item);
}
// red
// green
// blue
// Set.prototype.entries():返回键值对的遍历器
for (let item of set.entries()) {
console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
// Set.prototype.forEach():使用回调函数遍历每个成员
let set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
上次更新: 2024/08/14, 04:14:33