在 ES6 中,新增了一种数据结构 Set,它类似于数组,但是成员的值都是唯一的。本文将详细介绍 Set 数据结构的特点、常用方法及使用示例,帮助读者更好地理解和运用这种数据结构。
Set 数据结构的特点
Set 数据结构类似于数组,但是它的成员都是唯一的,没有重复的值。另外,Set 中的成员可以是任意类型的,包括基本类型和对象类型。Set 内部使用严格相等运算符(===)判断两个值是否相等,所以 NaN 等于自身,而两个对象总是不相等的。
Set 实例有以下特点:
- Set.prototype.constructor:构造函数,默认就是 Set 函数。
- Set.prototype.size:返回 Set 实例的成员总数。
- Set.prototype.add(value):添加某个值,返回 Set 结构本身。
- Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- Set.prototype.has(value):返回一个布尔值,表示该值是否为 Set 的成员。
- Set.prototype.clear():清除所有成员,没有返回值。
Set 常用方法
添加元素
可以使用 add 方法向 Set 实例中添加元素,示例如下:
const mySet = new Set(); mySet.add(1); mySet.add(2).add(3); mySet.add('hello');
删除元素
可以使用 delete 方法删除 Set 实例中的元素,示例如下:
const mySet = new Set([1, 2, 3, 4]); mySet.delete(1); mySet.delete(2);
判断元素是否存在
可以使用 has 方法判断 Set 实例中是否存在某个元素,示例如下:
const mySet = new Set([1, 2, 3, 4]); mySet.has(1); // true mySet.has(5); // false
清空 Set 实例
可以使用 clear 方法清空 Set 实例中的所有元素,示例如下:
const mySet = new Set([1, 2, 3, 4]); mySet.clear();
遍历 Set 实例
可以使用 for...of 循环遍历 Set 实例中的所有元素,示例如下:
const mySet = new Set([1, 2, 3, 4]); for (const value of mySet) { console.log(value); }
Set 使用示例
数组去重
Set 数据结构可以用于数组去重,示例如下:
const arr = [1, 2, 3, 1, 2]; const mySet = new Set(arr); const newArr = [...mySet]; console.log(newArr); // [1, 2, 3]
字符串去重
Set 数据结构也可以用于字符串去重,示例如下:
const str = 'hello world'; const mySet = new Set(str); const newStr = [...mySet].join(''); console.log(newStr); // 'helo wrd'
Set 与数组的转换
Set 数据结构与数组之间可以相互转换,示例如下:
const mySet = new Set([1, 2, 3, 4]); const arr = [...mySet]; console.log(arr); // [1, 2, 3, 4] const mySet2 = new Set(arr); console.log(mySet2); // Set(4) {1, 2, 3, 4}
总结
Set 数据结构是 ES6 中新增的一种数据结构,它类似于数组,但是成员的值都是唯一的。Set 内部使用严格相等运算符(===)判断两个值是否相等,所以 NaN 等于自身,而两个对象总是不相等的。Set 实例有添加元素、删除元素、判断元素是否存在、清空 Set 实例等常用方法。Set 数据结构可以用于数组去重、字符串去重、Set 与数组的转换等场景。掌握 Set 数据结构的特点、常用方法及使用示例,对提高 JavaScript 编程效率和代码质量都有很大的帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655da5dbd2f5e1655d7ea8f2