let arr =[1,2,2,2,3,33,44,4,44,22]
console.log(arr.sort((a,b)=>a-b));let a = arr.sort((a,b)=>a-b)functionclearRepeat(arr){let result =[arr[0]]for(let i =1;i<arr.length;i++){
arr[i]!= result[result.length-1]&& result.push(arr[i])}
console.log(result);}
console.time("str")clearRepeat(arr)
console.timeEnd("str")
二. ES6 的Set 集合 去重 (高性能) set可以接受一个数组参数并返回一个不重复的对象
functionunique(arr){// let x = new Set(arr)// return [...x]return Array.from(newSet(arr))// 简便写法// return Array.from(new Set([...arr]))}
console.time("str")
console.log(unique(arr));
console.timeEnd("str")
三.filter 数组过滤函数 并对其重排序 (简洁)
let b =arr.filter((item,index)=>{return arr.indexOf(item)== index
}).sort((a,b)=>a-b)
console.time("str")
console.log(b);
console.timeEnd("str")
四 . 哈希思想(高性能)
主要思路创建一个对象存储记录该数据的一个状态
functionunique(arr){let result =[]let hash ={}for(let i of arr){if(!hash[i]){
result.push(i)
hash[i]=true}}return result.sort((a,b)=>a-b)}
console.time("str")
console.log(unique(arr));
console.timeEnd("str")
五. 利用indexOf 方法 有重复时会返回第一个数的下标 没找到时返回-1
functionunique1(arr){let result =[]for(let i=0;i<arr.length;i++){if(result.indexOf(arr[i])==-1){
result.push(arr[i])}}return result
}
六.利用includes 方法 当result 数组中没有值时添加进去
functionunique2(arr){let result =[]for(let i of arr){!result.includes(i)&& result.push(i)}return result
}
七 找到重复的数组
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
// 哈希算法varfindRepeatNumber=function(nums){let hash ={}for(let i of nums){if(!hash[i]){
hash[i]=true}else{return i
}}};
一. 利用排序 后再对数组是否有重复来去重let arr = [1,2,2,2,3,33,44,4,44,22] console.log(arr.sort((a,b)=>a-b)); let a = arr.sort((a,b)=>a-b) function clearRepeat(arr){ let result = [arr[0]] for (let i =1 ;i<arr.length;i++){ arr[i] !