码迷,mamicode.com
首页 > 编程语言 > 详细

复习数组去重

时间:2019-07-24 13:02:28      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:function   ==   --   obj   需要   去重   OLE   简洁   console   

var a = [3, 62, null, 0, 38, undefined, NaN,NaN, ‘ ‘, 38, " "];


//1.set+array 不能区别nan ‘‘ ""
// 优点:代码简洁,速度快 时间复杂度O(N)
//缺点:需要一个额外的set和array的存储空间,空间复杂度 O(N)
function uniqueArray(arr){
// return Array.from(new Set(arr))
return [...new Set(arr)]
}
console.log(uniqueArray(a))


//2.splice 不能区别 null undefined ‘‘ ""
// 优点:不需要使用额外的存储空间,空间复杂度为O(1)
// 缺点:需要频繁的内存移动,双重循环,时间复杂度为O(N2)
function spliceUnique(arr){
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[j] == arr[i]){
arr.splice(j,1);
j--
}
}
}
return arr;
}
console.log(spliceUnique(a))


// 3.array indexof 能区别 null undefined ‘‘ ""
// 时间复杂度为O(N2),空间复杂度为O(N)
function arrayUnique(arr){
let tempArr = [];
for(let i=0;i<arr.length;i++){
if(tempArr.indexOf(arr[i]) < 0){
tempArr.push(arr[i])
}
}
return arr;
}

console.log(arrayUnique(a))



// 4.array+object 能区别 null undefined ‘‘ "" nan

function objectUnique(arr){
let obj = {},array = [];
for(let i=0;i<arr.length;i++){
if(!obj[arr[i]]){
obj[arr[i]] = true;
array.push(arr[i])
}
}
return array;
}

console.log(objectUnique(a))

复习数组去重

标签:function   ==   --   obj   需要   去重   OLE   简洁   console   

原文地址:https://www.cnblogs.com/tuhazi/p/11237047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!