javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。
在 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的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。javascript中的set的用法 Set用于存储唯一的值集合,没有键。Map用于存储键值对,键和值都可以是任意类型。