携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
Set 是唯一值的集合。每个值在 Set 中只能出现一次。一个 Set 可以容纳任何数据类型的任何值。
Set集合概述
- Set集合和Arry数组很相似,但是Set集合存储的是key也就是说Set集合中不可以存在两个值和数据类型都相等的key
- Set集合不可以用下标取值
- Set集合没有length属性而是size
- Set集合可以通过Array.from转为真正的数组
如何创建并使用 Set
创建一个 Set 并添加现有变量:
// 创建变量
const a = "a";
const b = "b";
const c = "c";
// 创建 Set
const letters = new Set();
letters.add(a);
letters.add(b);
letters.add(c);
add()
往集合添加元素,会进行去重,重复的元素添加只会显示一个
var set = new Set()
set.add(1)
console.log(set); // {1}
var set = new Set().add(1).add([2,3,4])
console.log(set); // {1, [2,3,4]}
var set = new Set([1,2,3,4,5,6]);
console.log(set.add(123)); // {1, 2, 3, 4, 5,6,123} 说明添加成功了
console.log(set.add(1)); // {1, 2, 3, 4, 5,6,123} 说明重复的没有添加成功
clear()
清空Set对象
var set = new Set([1,2,3,4,5,6]);
set.clear()
console.log(set); // {size: 0} 清空成功
delete()
删除Set对象中的值
var set = new Set([1,2,3,4,5,6]);
console.log(set.delete(1)); // true 说明删除成功
console.log(set.delete(1)); // false说明删除失败,因为集合中已经不存在 1
console.log(set); // [2,3,4,5,6] 1被删除掉了
entries()
entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。
var set = new Set([1,2,3,4,5]);
console.log(set); // {1, 2, 3, 4, 5}
console.log(set.entries()); // {1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5}
has()
判断Set对象中某个值是否存在,存在返回true,不存在返回false
var set = new Set([1,2,3,4,5]);
console.log(set.has(1)); // ture 说明Set对象中存在1
console.log(set.has(6)); // false 说明Set对象中不存在6
forEach()
为每个元素调用回调 它具有三个参数:
- .value:可选,Set对象中元素的值。
- .key:可选由于Set对象没有键,所以key的值和value的值相同。
- .setObj:可选,Set对象本身。
var set = new Set([1,2,3,4,5]);
set.forEach((value,key,setObj)=>{
console.log(value,key,setObj);
})
// 1 1 {1, 2, 3, 4, 5}
// 2 2 {1, 2, 3, 4, 5}
....
keys() 与 values()
返回Set对象的key值数组,返回Set对象的value值数组
var set = new Set([1,2,3,4,5]);
console.log(set.keys()); // {1, 2, 3, 4, 5}
console.log(set.values()); // {1, 2, 3, 4, 5}
size
返回Set对象中元素计数
var set = new Set([1,2,3,4,5]);
console.log(set.size); // 5
Set 对象的方法和属性集合
| 名称 | 说明 |
|---|---|
| new Set() | 创建新的 Set 对象。 |
| add() | 向 Set 添加新元素。 |
| clear() | 从 Set 中删除所有元素。 |
| delete() | 删除由其值指定的元素。 |
| entries() | 返回 Set 对象中值的数组。 |
| has() | 如果值存在则返回 true。 |
| forEach() | 为每个元素调用回调。 |
| keys() | 返回 Set 对象中值的数组。 |
| values() | 与 keys() 相同。 |
| size | 返回元素计数。 |