在 JavaScript 中,集合 (set) 类型是一种无序且不能重复的数据结构,它可以用来存储任意类型的值。在 ES6 中,JavaScript 引入了 Set 类型;而在 ES12 中,Set 类型得到了进一步的改进和扩展,包括新的 API,更高效的结构和更广泛的应用。本文将为您介绍 ES12 中的集合类型的用法指南及实践。
Set 类型的基础
创建 Set 对象
ES12 中可以通过以下两种方式创建一个 Set 对象:
- 使用
new
关键字创建 Set 对象
const mySet = new Set(); // 创建一个空的 Set 对象
- 使用数组创建 Set 对象
const mySet = new Set([1, 2, 3, 4, 5]); // 从数组中创建 Set 对象
添加、删除、查询 Set 元素
向一个 Set 对象添加元素可以使用 add()
方法,删除元素可以使用 delete()
方法,查询元素可以使用 has()
方法。
const mySet = new Set(); mySet.add("apple"); // 添加一个元素 mySet.add("banana"); // 添加一个元素 mySet.delete("apple"); // 删除一个元素 console.log(mySet.has("banana")); // 输出 true,因为 "banana" 存在于 Set 中
Set 大小
通过 size
属性,我们可以获取 Set 中元素的个数。
const mySet = new Set([1, 2, 3, 4, 5]); console.log(mySet.size); // 输出 5
Set 类型的高级应用
Set 中的元素必须是唯一的
Set 类型与数组不同的是,Set 中的元素不能重复,所以不管我们添加多少个相同的元素,Set 中只会保留其中的一个。
const mySet = new Set(); mySet.add("apple"); mySet.add("banana"); mySet.add("apple"); console.log(mySet); // 输出 Set { 'apple', 'banana' }
Set 中元素的顺序
Set 类型中的元素是无序的,所以我们在将一个 Set 转换为数组时不能保证其顺序。如果我们需要对其顺序进行排序,可以使用 Array.from()
方法将 Set 转换成数组,然后使用 sort()
方法进行排序。
const mySet = new Set([3, 5, 2, 4, 1]); console.log(mySet); // 输出 Set { 3, 5, 2, 4, 1 } const myArray = Array.from(mySet); console.log(myArray.sort()); // 输出 [1, 2, 3, 4, 5]
Set 中元素的遍历
Set 类型提供了三种内置的迭代方法:keys()
、values()
和 entries()
。由于 Set 类型中的元素与其下标无关,因此 keys()
方法和 values()
方法的效果是相同的。
const mySet = new Set(["apple", "banana", "orange"]); for (const value of mySet.values()) { console.log(value); // 输出 "apple"、"banana" 和 "orange" }
除了这些方法外,Set 类型还提供了 forEach()
方法。
const mySet = new Set([1, 2, 3, 4, 5]); mySet.forEach(value => { console.log(value); // 输出 1、2、3、4 和 5 });
Set 和数组的互相转换
Set 类型和数组之间可以互相转换,下面是两种方法:
- 将 Set 转换成数组
const mySet = new Set([1, 2, 3, 4, 5]); const myArray = [...mySet]; console.log(myArray); // 输出 [1, 2, 3, 4, 5]
- 将数组转换成 Set
const myArray = [1, 2, 3, 4, 5]; const mySet = new Set(myArray); console.log(mySet); // 输出 Set { 1, 2, 3, 4, 5 }
Set 类型的实践应用
Set 类型的高效性和无重复性使得它在实践中被广泛应用。下面是一些实践应用场景:
数组的去重
将一个数组转换为 Set 对象,再将 Set 对象转换成数组,可以达到去重的目的。
const myArray = [1, 2, 2, 3, 4, 5, 5]; const result = [...new Set(myArray)]; console.log(result); // 输出 [1, 2, 3, 4, 5]
元素的交集、差集、并集
Set 类型也可以用来计算两个集合之间的交集、差集和并集,具体实现方法如下:
-- -------------------- ---- ------- ----- ---- - --- ------- -- -- ---- ----- ---- - --- ------- -- -- ---- -- --- ----- ------------ - --------------------- -- ---------------- -------------------------- -- -- --- -- -- --- ----- ---------- - --------------------- -- ----------------- ------------------------ -- -- --- -- -- --- ----- ----- - --------- --------- ------------------- ------------- -- -- --- -- -- -- -- --
总结
Set 类型是 ES12 中新增的一种数据结构,它可以用来存储任意类型的值,并且保证元素无序并且唯一。Set 类型提供了一系列的方法可以用来操作这些元素,主要包括添加、删除、查询、遍历、转换等操作。在实践中,Set 类型可以用来进行数组的去重,以及计算集合之间的交集、差集和并集等操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a0dc8148841e9894d22a8e