数组去重是面试经常会遇到的问题,解决的方案有很多,本篇着重通过es6提供的新的数据结构来解决。
- Map对象解决去重
- Set对象解决去重
Map对象解决去重
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map对象
方法 | 描述 |
---|---|
clear | 删除所有的键/值对,没有返回值 |
delete | 删除某个键,返回true。如果删除失败,返回false。 |
forEach | 对每个元素执行指定操作。 |
get | 返回Map对象key相对应的value值。 |
has | 返回一个布尔值,表示某个键是否在当前Map对象之中。 |
set | 给Map对象设置key/value键/值对。 |
数组去重
1 | function unique(arr) { |
Array.filter()
创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
Set对象解决去重
Set对象是值的集合,元素只会出现一次,即Set中的元素是唯一的.
通过Set()创建的是一个对象,可以使用点语法(…)或者是Array.from将其转化为数组,然后既可以使用数组处理函数了。
Set对象
语法:
new Set([iterable])
参数:
iterable,如果传递一个可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等),它的所有元素将被添加到新的 Set中。如果不指定此参数或其值为null,则新的 Set为空。
数组去重
1 | function unique(arr) { |
Array.from()
用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。