ES6 中的 Set 数据结构使用技巧
Set 是 ES6 中新增的数据结构,它类似于数组,但是成员的值是唯一的,没有重复的值。使用 Set 可以轻松地完成数组去重、快速查找等操作。本文将介绍 Set 的使用技巧,包括创建、添加、删除、遍历等操作,帮助读者更好地掌握 Set 的使用方法。
创建 Set
创建 Set 对象最简单的方法是使用new Set()
。如果想要一次性向 Set 中添加多个元素,可以将它们放入数组或可迭代对象中,然后使用new Set(array)
或new Set(iterable)
创建 Set 对象。
const set1 = new Set(); set1.add(1); set1.add(2); set1.add(3); const set2 = new Set([4, 5, 6]); const set3 = new Set('hello');
添加和删除元素
Set 对象的 add() 方法可以向 Set 中添加元素,如果添加的元素已存在,则不会重复添加。同时,Set 对象也提供了 delete() 方法来删除 Set 中的元素。
const set1 = new Set(); set1.add(1).add(2).add(3); set1.delete(2); console.log(set1); // Set { 1, 3 }
判断元素是否存在
Set 对象的 has() 方法可以判断 Set 中是否存在特定元素,如果存在则返回 true
,否则返回 false
。
const set1 = new Set([1, 2, 3]); console.log(set1.has(2)); // true console.log(set1.has(4)); // false
遍历 Set
Set 对象提供了四种遍历方法,分别是keys()
、values()
、entries()
和forEach()
。其中keys()
方法返回一个 Set 对象的键名迭代器,values()
方法返回一个 Set 对象的值迭代器,entries()
方法返回一个 Set 对象的键值对迭代器,forEach()
方法接收一个回调函数,可以遍历 Set 中的每一个元素。
// javascriptcn.com 代码示例 const set1 = new Set([1, 2, 3]); for(const key of set1.keys()){ console.log(key); // 1, 2, 3 } for(const value of set1.values()){ console.log(value); // 1, 2, 3 } for(const item of set1.entries()){ console.log(item); // [1, 1], [2, 2], [3, 3] } set1.forEach(function(value, key){ console.log(key + ' : ' + value); // 1 : 1, 2 : 2, 3 : 3 });
需要注意的是,Set 对象的默认迭代器是 values()
方法,所以可以直接使用for...of
循环遍历 Set 对象中的值。
const set1 = new Set([1, 2, 3]); for(const value of set1){ console.log(value); // 1, 2, 3 }
Set 的实战应用
使用 Set 可以轻松地完成数组去重的操作,并且速度比较快。
const arr = [1, 2, 2, 3, 3, 4, 5, 5]; const set1 = new Set(arr); const arr2 = [...set1]; console.log(arr2); // [1, 2, 3, 4, 5]
使用 Set 数据结构可以快速查找两个数组中的交集,差集和并集。
// javascriptcn.com 代码示例 const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4]); // 交集 const intersection = new Set([...set1].filter(x => set2.has(x))); console.log([...intersection]); // [2, 3] // 差集 const difference = new Set([...set1].filter(x => !set2.has(x))); console.log([...difference]); // [1] // 并集 const union = new Set([...set1, ...set2]); console.log([...union]); // [1, 2, 3, 4]
总结
本文介绍了 ES6 中的 Set 数据结构,包括创建、添加、删除、判断和遍历等操作,还介绍了 Set 的实战应用。通过学习本文,读者可以更好地掌握 Set 的使用方法,提高代码编写效率,增强代码的可读性和健壮性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6501145b95b1f8cacdee47ab