JS中数组的去重

记一道JS数组去重题

前言,有一次去面试,面试官问我一个数组去重题。有哪些方法可以实现。

当时第一反应是hash去重,第一个想法是自己去实现去重算法,(太弱了)。

ES6中的Set类

不过在ES6中新加的Set类就是一个hash集合的实现,现在我们就用Set来实现下去重。

//首先生成一个带有重复元素的数组 [ 0, 1, 1, 2, 2, 3, 3, 4, 4, 5 ]
var arr = Array.from(Array(10),(v,k)=>Math.round(k/2));

var set = new Set(arr);

//去重后的结果 [ 0, 1, 2, 3, 4, 5 ]
var deduplicationArr = [...set];

Map类

Map跟Set差不多,都是基于Hash集合的实现,不过Map是键值对的,所以利用Map可以实现键值对按键的的去重。

var map = new Map();

map.set('key1','value1');
map.set('key1','new-value1');

//output: 'new-value1'
var value = map.get('key1');

posted @ 2019-05-07 21:52  锈剑独孤  阅读(152)  评论(0编辑  收藏  举报