数组去重的五种方法
1.第一种方式就是最简单的set去重(o(n))
var arr = [1,2,2,4,3,4,1,3,2,7,5,6,1]
var newArr = new Set(arr)
2.第二种方式就是用indexOf来去重(o(n^3))判断新数组中某个数字是否存在
function fn(arr){
let newArr = []
arr.forEach((val)=>{
if(newArr.indexOf(val) == -1){
newArr.push(val)
}
})
return newArr
}
//利用过滤器去重
function fn(arr) {
return arr.filter((item, index, arr) => arr.indexOf(item) === index)
}
3.第三种方式普通去重(o(n^3))
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1)
}
}
}
4.键值去重(o(n^3))根据键值是唯一的来去重
function fn(arr){
let arr1 = [],
arr2 = []
arr.forEach((val)=>{
arr1[val]=val
})
//arr1数组会存在空的情况
//所以返回arr2
arr1.forEach((val)=>{
if(!!val){
arr2.push(val)
} })
return arr2
}
5.sort排序后去重(o(n^2))只比set复杂度低
function fn(arr){
let newArr = []
arr.sort((a,b)=>{
return a-b
})
arr.forEach((val,index)=>{
if(val != arr[index+1]){
newArr.push(val)
}
})
return newArr
}
相关文章
暂无评论...