Set
是 ES6 中新增的一种集合类型,类似于数组,但其成员的值是唯一的,即不会重复。关于Set,可以阅读《JavaScript中的Set数据操作:交集、差集、交集、对称差集》。Set
对象是一个构造函数,可以使用 new
关键字来创建一个 Set
实例。例如:
const mySet = new Set();
Set
对象具有以下特征:
Set
实例的成员唯一,不会重复。Set
实例可以存储任何类型的值,包括基本类型和对象。Set
实例是可迭代的,可以使用for...of
循环遍历其中的值。Set
实例的size
属性可以用来获取它包含的成员数量。
Set
对象有以下常用方法:
add(value)
:添加一个值到 Set
实例中。delete(value)
:从 Set
实例中删除一个值。has(value)
:判断 Set
实例中是否包含某个值,返回一个布尔值。clear()
:清空 Set
实例中的所有值。
可以使用以下代码创建一个包含几个元素的 Set
对象并使用其方法:
const mySet = new Set(); mySet.add(1); mySet.add("two"); mySet.add({ name: "DevPoint" }); console.log(mySet.has("two")); // 输出 true mySet.delete(1); console.log(mySet.size); // 输出 2 mySet.clear(); console.log(mySet.size); // 输出 0
在 ES6 中,可以使用 Array.from()
方法将 Set
转换为数组。该方法接受一个可迭代对象,并返回一个新数组。
例如,假设有一个 Set
对象 mySet
,可以按以下方式将其转换为数组:
const mySet = new Set([1, 2, 3]); const myArray = Array.from(mySet); console.log(myArray); // 输出 [1, 2, 3]
除此之外,还可以使用扩展运算符 ...
来将 Set
转换为数组。例如:
const mySet = new Set([1, 2, 3]); const myArray = [...mySet]; console.log(myArray); // 输出 [1, 2, 3]
这种方法更简洁,但不支持 IE 浏览器。
除了使用 Array.from()
方法和扩展运算符 ...
,还有就是通过遍历 Set
并将每个元素添加到一个新数组中。
const mySet = new Set([1, 2, 3]); const myArray = []; for (let item of mySet) { myArray.push(item); } console.log(myArray); // 输出 [1, 2, 3]