ECMAScript 2016:集合类型与 Set
在 ECMAScript 2016 中,集合类型是一个新的数据类型,它与数组非常相似,但是没有重复元素。在集合类型中,您可以使用 Set 来保存一个集合,Set 可以是任何类型的对象,例如字符串、数字、对象等。集合类型是非常有用的,它可以用来处理需要去重的元素列表,或者存储和处理类似于数据库或散列表中的键值对数据。
Set 定义和使用
Set 是一个内置的 JavaScript 对象,它提供了有关访问、修改和查询集合的方法。使用 Set 可以创建一个空集合,也可以使用一个数组或可迭代的对象来初始化一个 Set。
创建一个空 Set:
const mySet = new Set();
初始化 Set:
const mySet = new Set([1,2,3,4,5]);
Set 中添加新的元素:
mySet.add(6);
从 Set 中删除元素:
mySet.delete(3);
检查 Set 中是否包含元素:
mySet.has(1);
获取 Set 的大小:
mySet.size;
Set 的遍历:
mySet.forEach((value) => console.log(value));
Set 与数组之间的转换:
数组转 Set:
const myArr = [1,2,3,4,5]; const mySet = new Set(myArr);
Set 转数组:
const mySet = new Set([1,2,3,4,5]); const myArr = Array.from(mySet);
Set 的用途
Set 可以在很多场景下用作一个非常有用的数据结构。下面是一些案例,来展示如何使用 Set 去解决一个问题。
案例一:检查数组中的重复元素
当需要检查一个数组中是否包含有重复元素时,可以使用 Set。
const myArr = [1,2,2,3,4,5,5]; const mySet = new Set(myArr); if (myArr.length !== mySet.size) { console.log('There are duplicates in the array'); }
案例二:合并两个数组中不同元素
当需要从两个数组中提取出不同的元素时,可以使用 Set。
const arr1 = [1, 2, 3, 4, 5]; const arr2 = [4, 5, 6, 7, 8]; const diff = new Set([...arr1, ...arr2].filter((value, index, array) => array.indexOf(value) === array.lastIndexOf(value))); console.log(diff); // 输出: Set {1, 2, 3, 6, 7, 8}
案例三:检查两个数组是否包含相同的元素
当需要检查两个数组中是否有相同的元素时,可以使用 Set。
const arr1 = [1, 2, 3, 4, 5]; const arr2 = [4, 5, 6, 7, 8]; const set1 = new Set(arr1); const set2 = new Set(arr2); const intersection = new Set([...set1].filter(value => set2.has(value))); console.log(intersection); // 输出: Set {4, 5}
总结
ECMAScript 2016 引入的集合类型和 Set 是处理数组中重复元素、合并数组、检查数组包含相同元素等任务的理想选择。Set 提供了简单易用的 API 和高效的性能,可以使开发者更加高效地处理数据。在您编写代码时,集合和 Set 可以很容易地帮助您避免重复代码和错误,并让您的代码更加简洁和易于维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6455c038968c7c53b092481e