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');