初学ES6 new Set()-涨知识的数组去重

249 阅读2分钟

前景介绍

这次更新的内容会很少,就一个描述一个问题,那就是标题上面写的,数组去重。如果去百度JS 数组去重,你会发现有各种各样的数组去重方式。常见的数组去重方式有:

  • 双循环去重
  • for循环与includes()去重
  • for循环与indexOf()去重
  • for循环与Array.splice()去重
  • Array.filter() + indexOf去重
  • Array.sort()去重
  • Array.forEach()与inclus()去重
  • 利用对象属性的特性去重
  • ···
  • ···

正文

我这次不讲这些东西,讲的是我学es6发现的一个新的数组去重的方法,那就是使用Set()。

Set 对象的介绍

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

Set 中的特殊值

Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

  • +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
  • undefined 与 undefined 是恒等的,所以不重复;
  • NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。

上边的介绍取自菜鸟教程 ES6 Map 与 Set,这是菜鸟教程的官网菜鸟教程 - 学的不仅是技术,更是梦想!,学技术只要努力在哪里都可以,网上资源那么多就看你要不要去学习了,好像扯的有点远,回归正题,使用Set进行数组去重,下面重点来了。

let arr=[1,2,3,1,3,2,4,2,3,1,4,2,1,3,4,2,3] //定义一个数组
arr=new Set(arr) //将数组放进new Set()里面
arr=[...arr]  //解构
console.log(arr)   // [1,2,3,4]

我当时看到这种写法惊为天人,这种写法也太方便了吧,再也不用写循环了(视情况而定)。看到上边的代码我觉得还是有点麻烦,我可是立志要成为高级程序员的人,所以把代码合并在一起就有了下边的一行数组去重代码。

let arr=[1,2,3,1,3,2,4,2,3,1,4,2,1,3,4,2,3]
arr=[...new Set(arr)]
console.log(arr)   // [1,2,3,4]

截图为证:

总结

关于Set()的用法请自行百度JS Set()或者ES6 Set(),我只是分享我自己学es6中的收获给大家。