javascript中的set的常用方法和操作
作者:AndrewPerfect
前言
在 JavaScript 中,Set
是一种内置的数据结构,用于存储唯一值的集合。Set
对象允许你存储任意类型的值,无论是基本类型还是对象类型。以下是 Set
的常用方法和操作:
1. 创建一个 Set:
你可以通过 new Set()
来创建一个新的 Set
对象。
const mySet = new Set();
2. 向 Set 中添加元素:
使用 .add()
方法可以向 Set
中添加元素。
mySet.add(1); // Set { 1 } mySet.add(5); // Set { 1, 5 } mySet.add(1); // Set { 1, 5 } (1 已经存在,不会重复添加) mySet.add('hello'); // Set { 1, 5, 'hello' }
3. 检查 Set 中是否存在某个值:
使用 .has()
方法来检查一个值是否在 Set
中。
console.log(mySet.has(1)); // true console.log(mySet.has(10)); // false
4. 删除 Set 中的元素:
使用 .delete()
方法可以删除某个元素。
mySet.delete(5); // true console.log(mySet); // Set { 1, 'hello' }
5. 获取 Set 的大小:
使用 .size
属性可以获得 Set
的元素数量。
console.log(mySet.size); // 2
6. 清空 Set:
使用 .clear()
方法可以清空 Set
中的所有元素。
mySet.clear(); console.log(mySet.size); // 0
7. 遍历 Set:
你可以使用 forEach()
或 for...of
循环来遍历 Set
。
PS:[1, 2, 3, 'a', 'b']为一个数组。
const anotherSet = new Set([1, 2, 3, 'a', 'b']); // 使用 forEach 遍历 anotherSet.forEach(value => { console.log(value); }); // 使用 for...of 遍历 for (let value of anotherSet) { console.log(value); }
8. Set 和数组的转换:
你可以很容易地将 Set
转换为数组,或者将数组转换为 Set
。
// Set 转换为数组 const setArray = [...anotherSet]; // [1, 2, 3, 'a', 'b'] // 数组转换为 Set const array = [1, 2, 2, 3, 4]; const arraySet = new Set(array); // Set { 1, 2, 3, 4 }
9. 去重数组中的重复值:
利用 Set
的唯一性,你可以快速去除数组中的重复项。
const numbers = [1, 2, 3, 3, 4, 5, 5]; const uniqueNumbers = [...new Set(numbers)]; // [1, 2, 3, 4, 5] 首先将数据转换为set,再将set转换为数组。
set和map的区别:
1. 存储类型:
Set:只存储唯一值,不存储键值对。每个元素都是一个值,且不能重复。
const mySet = new Set(); mySet.add(1); mySet.add(2); mySet.add(2); // 无法添加重复的值 console.log(mySet); // Set { 1, 2 }
Map:存储的是键值对。每个元素都有一个键和一个对应的值,键可以是任何类型(包括对象)。
const myMap = new Map(); myMap.set('key1', 'value1'); myMap.set('key2', 'value2'); console.log(myMap); // Map { 'key1' => 'value1', 'key2' => 'value2' }
2. 元素的唯一性:
Set:不能存储重复的值。Set 会确保集合中的每个元素都是唯一的。
const set = new Set([1, 1, 2, 3]); console.log(set); // Set { 1, 2, 3 } (1 不会重复)
Map:键必须是唯一的,但不同的键可以对应相同的值。Map 中允许重复的值,只要键不同。
const map = new Map(); map.set('a', 1); map.set('b', 1); // 相同的值,键不同 console.log(map); // Map { 'a' => 1, 'b' => 1 }
3. 键和值的使用:
Set:只有值,没有键。每个值在
Set
中都是唯一的元素。const set = new Set([1, 2, 3]); set.forEach(value => console.log(value)); // 遍历的是值
Map:每个元素都有键和值,使用
.set(key, value)
来添加键值对,用.get(key)
来获取对应的值。const map = new Map(); map.set('name', 'Alice'); map.set('age', 30); console.log(map.get('name')); // 'Alice'
4. 迭代:
Set:遍历
Set
时,你只能遍历值。const set = new Set([1, 2, 3]); for (let value of set) { console.log(value); // 1, 2, 3 }
Map:遍历
Map
时可以遍历键、值或者键值对。const map = new Map([['key1', 'value1'], ['key2', 'value2']]); // 遍历键 for (let key of map.keys()) { console.log(key); // key1, key2 } // 遍历值 for (let value of map.values()) { console.log(value); // value1, value2 } // 遍历键值对 for (let [key, value] of map.entries()) { console.log(key, value); // key1 value1, key2 value2 }
5. 方法:
Set:
.add(value)
:向Set
中添加值。.delete(value)
:删除Set
中的值。.has(value)
:检查Set
中是否有某个值。.clear()
:清空Set
。.size
:获取Set
的大小。
Map:
.set(key, value)
:向Map
中添加键值对。.get(key)
:通过键获取对应的值。.delete(key)
:删除某个键值对。.has(key)
:检查Map
中是否有某个键。.clear()
:清空Map
。.size
:获取Map
的大小。
6. 使用场景:
Set:适用于处理唯一值集合的场景,如数组去重、存储一组无重复的值。
const uniqueValues = new Set([1, 2, 2, 3, 4]); // Set { 1, 2, 3, 4 }
Map:适用于需要键值对存储的场景,如缓存、字典、关联数组等。
const dictionary = new Map(); dictionary.set('apple', 'A fruit'); dictionary.set('car', 'A vehicle');
总结:
- Set 用于存储唯一的值集合,没有键。
- Map 用于存储键值对,键和值都可以是任意类型。
到此这篇关于javascript中的set的常用方法和操作的文章就介绍到这了,更多相关js中set用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!