ES6实现数组去重

function unique(arr) {

    //定义常量 res,值为一个Map对象实例

    const res = new Map();

    //返回arr数组过滤后的结果,结果为一个数组

    //过滤条件是,如果res中没有某个键,就设置这个键的值为1

    return arr.filter((a) => !res.has(a) && res.set(a, 1))

}


Map对象

Map是ES6 提供的新的数据结构。

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

下表列出了 Map 对象的方法。

clear 删除所有的键/值对,没有返回值。

delete 删除某个键,返回true。如果删除失败,返回false。

forEach 对每个元素执行指定操作。

get 返回Map对象key相对应的value值。

has 返回一个布尔值,表示某个键是否在当前 Map 对象之中。

set 给Map对象设置key/value 键/值对。

Map对象还有一个size属性,他返回Map对象的键/值对的数量。

数组的 filter() 方法

filter() 方法创建一个新的数组,新数组中的元素 是 通过检查 指定数组 中 符合条件的所有元素

array.filter(function(currentValue,index,arr), thisValue)




Array.from也可实现数组去重

由于 Array.from() 的入参是可迭代对象,因而我们可以利用其与 Set 结合来实现快速从数组中删除重复项。

functionunique(array){returnArray.from(newSet(array));}   unique([1,1,2,3,3]);// => [1, 2, 3]

首先,new Set(array) 创建了一个包含数组的集合,Set 集合会删除重复项。

因为 Set 集合是可迭代的,所以可以使用 Array.from() 将其转换为一个新的数组。

这样,我们就实现了数组去重。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容