前言
之前有位同事突然问我,怎么去重 ,特此记录...
基础类型
用set就可以满足了 , 这里不赘述
引用类型
数组
const arr = [[1 , 1] , [1 , 1] , [2 , 2]]
const m= new Map(arr)
console.log(m)
VM6135:3 Map(2) {1 => 1, 2 => 2}
undefined
m.set(2 , 2)
Map(2) {1 => 1, 2 => 2}
m.set(3 , 3)
Map(3) {1 => 1, 2 => 2, 3 => 3}
当然,你用循环遍历去重也是可以的 , 如:
Array.filter() 加 indexOf
function distinct(a, b) {
let arr = a.concat(b);
return arr.filter((item, index)=> {
return arr.indexOf(item) === index
})
}
对象 如
const arr = [{a: 1} , {a: 1} , {a: 2}]
对象去重好像只得 遍历对比了。
还有一种方法 , 利用map
const arr = [{a: 1} , {a: 1} , {a: 2}]
const map = new Map()
arr.forEach((item, index)=>{
!(map.has(JSON.stringify(item)))&& map.set(JSON.stringify(item) , index)
})