JS的集合
- 前言
- 一、集合
- 二、基本使用
- 1. 创建集合
- 2. 添加元素
- 3. 删除元素
- 4. 检查元素
- 5. 清空集合
- 6. 集合的大小
- 三、扩展使用
- 1. 遍历集合
- 2. 从数组创建集合
- 3. 集合的应用场景
- 四、总结
前言
JS里对于集合的简单介绍
同数学的集合,有无序性、唯一性
注意:无法获取某个元素的下标,因为无序性
所以对于某些情况:
例如:求两数之和时,需要使用到下标,此时不适合使用集合,可以使用Map
一、集合
在 JavaScript 中,集合(Set)是一种非常有用的数据结构,用于存储独特的值,这些值可以是原始值或对象引用。集合的主要特点是它保证了集合中所有的值都是唯一的,因此在处理需要去重的数据时非常有效。
二、基本使用
1. 创建集合
可以通过 new Set() 来创建一个新的集合
// 创建空集合
const set1 = new Set();
// 用数组初始化集合
const set2 = new Set([1, 2, 3, 3]); // 自动去重,结果为{1, 2, 3}
// 用字符串初始化
const set3 = new Set("hello"); // {"h", "e", "l", "o"}
// 用DOM对象初始化
const lis = document.querySelectorAll('li');
const setLi = new Set(lis);
2. 添加元素
使用 add() 方法向集合中添加元素
mySet.add(1);
mySet.add(2);
mySet.add(3);
console.log(mySet); // Set { 1, 2, 3 }
如果尝试添加重复的元素,集合会自动忽略
mySet.add(2);
console.log(mySet); // Set { 1, 2, 3 },2 只会出现一次
3. 删除元素
使用 delete() 方法从集合中删除元素
mySet.delete(2);
console.log(mySet); // Set { 1, 3 }
4. 检查元素
可以使用 has() 方法检查集合中是否包含特定元素
console.log(mySet.has(1)); // true
console.log(mySet.has(2)); // false
5. 清空集合
使用 clear() 方法可以移除集合中的所有元素
mySet.clear();
console.log(mySet); // Set {}
6. 集合的大小
使用 size 属性可以获取集合中元素的数量:
const mySet = new Set(1, 2, 3)
console.log(mySet.size); // 3
三、扩展使用
1. 遍历集合
可以使用 forEach 方法或 for…of 循环遍历集合中的元素:
mySet.add(1);
mySet.add(2);
mySet.forEach(value => {
console.log(value); // 输出 1 和 2
});
for (const value of mySet) {
console.log(value); // 输出 1 和 2
}
2. 从数组创建集合
可以将数组传递给 Set 构造函数,以自动去重数组中的元素
const uniqueArray = new Set([1, 2, 2, 3, 4]);
console.log(uniqueArray); // Set { 1, 2, 3, 4 }
如果需要将集合转换重新为数组,可以使用 Array.from() 或扩展运算符( … )
const uniqueArrayBack = Array.from(uniqueArray);
console.log(uniqueArrayBack); // [1, 2, 3, 4]
const uniqueArrayBack2 = [...uniqueArray];
console.log(uniqueArrayBack2); // [1, 2, 3, 4]
3. 集合的应用场景
- 去重: 当你需要从一个数组中去掉重复的元素时,可以使用 Set。
- 检查唯一性: 快速检查一个元素是否已经在集合中。
- 集合运算: Set 也可以被用来实现集合运算,例如交集、并集和差集等。
示例:集合运算
下面的示例展示了如何使用集合来计算两个数组的交集
function intersect(arr1, arr2) {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const intersection = [];
set2.forEach(value => {
if (set1.has(value)) {
intersection.push(value);
}
});
return intersection;
}
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
console.log(intersect(array1, array2)); // 输出: [3, 4]
四、总结
JavaScript 中的集合(Set)提供了一种简单且高效的方式来处理具有唯一特性的值。它的易用性和强大功能使其在处理数据去重、唯一性检查和集合运算等方面非常有用。通过掌握 Set 的基本特性和方法,可以在 JavaScript 编程中更好地处理数据。