什么是 Set?
Set 是 ES6 中新增的一种数据结构类型,它类似于数组(Array),但它的成员是唯一的,不存在重复的值。Set 的特点如下:
- Set 存储的值没有重复项。
- Set 内部使用严格相等比较规则判断相等的元素。例如,Set 对象内部的 NaN 与 NaN 是不等的,因为 NaN 与任何值都不相等,所以 Set 里面可以存储不同的 NaN。
- Set 本身是一个构造函数,可以使用 new 命令生成一个实例。可以像普通数组一样使用 Set 类型的实例。
如何使用 Set 去重?
ES6 中提供了 Set 接口来去除数组的重复元素。将数组转成 Set类型,然后将 Set 类型转成数组即可实现数组去重。
const arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3, 4]
上面的代码中,通过 new Set(arr) 将数组 arr 转换为一个 Set 类型的数据结构,使用 ...
运算符将 Set 类型转换为数组,从而达到了数组去重的目的。这种方法可以去除字符串,对象数组等多种复杂类型的数组中的重复项。
Set 去重的优势
相比其他去重方法(如 for 循环或对象键值对去重),使用 Set 去重有如下优势:
- Set 内置去重方法性能更高效。
- Set 内置去重方法可以去重任何数据类型,无需区分类型,使用起来简单。
- Set 内置去重方法返回的是 Set 类型,可以对结果进行进一步的操作,比如取交集、并集等操作。
使用 Set 的案例
下面我们提供一个实际的案例,根据用户行为统计出访问次数前三的文章:
-- -------------------- ---- ------- ----- ----------- - - ---- -- ------ ----- - -------- ---------- ----- ---- -- ------ ----------- ------- ---------- ----- ---- -- ------ ---- ---- ---------- ----- ---- -- ------ ------ ---- ---------- ----- ---- -- ------ ---- ---- ---------- ----- ---- -- ------ --- ---- ------ ---------- ----- ---- -- ------ --------- ---------- ----- ---- -- ------ -------- ------ ---------- ---- ---- -- ------ ---------- ---------- ----- ---- --- ------ ------- ------ ---------- ----- - --- ------------ - --- ----- --- -------- - -- -------------------------- -- - -------------------------------- -- ------------ - -------------------------- -- -- - - -- --- ---- - - -- - - -- ---- - -------------------------- -- - -- --------------- --- ---------------- - ------------------- - -- - ---------------------
上面的代码中,我们将阅读次数存入 Set 类型变量 viewCountSet,并通过 [...]运算符将其转换为数组。
注意,由于 Set 类型是去重后的数组,这里 topThree 数组在 push() 的过程中不会出现重复的文章。
结论
Set 是一种高效的去重方法,在日常的开发中,经常会用到 Set 来去除数组中的重复项,并且可以简单地进行各种操作,因此深入学习 Set 的使用是非常有意义的。
在实际使用中,我们可以根据具体应用的场景,使用 Set 方法进行数据的去重,以便更好地提高程序的性能和效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674ff5bffbd23cf890712aa3