js中的数组去重是面试必考点,这里来 浅谈下ES6中的新增方法
1.利用Map对象和数组filter方法
let arr = [1,2,2,1,3,6,5,3,6,12,89]
function unique(arr1){
const a = new Map();
return arr1.filter((b)=>!a.has(b) && a.set(b,1))
}
let newArr = unique(arr)
console.log(newArr)
通过控制台输出结果,可以看出arr中重复的字符的确去除了
1.Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Mp对象之中,set的办法是给Map对象设置key/value。
2.filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
所以说,Map对象结合filter方法可以达到数组去重的效果
2.利用set对象和数组array.from方法
let arr = [1,2,2,1,3,6,5,3,6,12,89]
function unique(arr1){
const a = new Map();
// return arr1.filter((b)=>!a.has(b) && a.set(b,1))
return Array.from(new Set(arr));
}
let newArr = unique(arr)
console.log(newArr)
在这段代码只中:
Set是ES6新提供的数据结构,类似于数组,但是本身没有重复值。
Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
3.利用set + 扩展运算符 去重
let arr = [1,2,2,1,3,6,5,3,6,12,89]
let newArr = [...new Set(arr)]
console.log(newArr)
第三种较对于前两种是最快也是最简洁的,想必大家在面试中最先想到就是这种方法了