借鉴计数排序的原理,使用hash
1 2 3 4 5 6 7 8 9 10 11
| unique = (array) => { const hash = [] for(let i=0;i<array.length; i++){ hash[array[i]] = true } const result = [] for(let k in hash){ result.push(k) } return result }
|
缺点:只支持数字或者字符串数组,如果数组里面有对象,比如 array = [{number:1}, 2],就会出错。
使用 Set
1 2 3 4
| unique = (array) => { return [...new Set(array)] }
|
缺点:不支持对象去重
Map数据结构实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| unique = (array) => { let map = new Map(); let result = [] for (let i = 0; i < array.length; i++) { if(map.has(array[i])) { continue } else { map.set(array[i], true); result.push(array[i]); } } return result; } let arr = ["1",1,2,2,"1",{a:1,b:2},{b:2,c:3}]
|