复习数组去重
Posted tuhazi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习数组去重相关的知识,希望对你有一定的参考价值。
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))
以上是关于复习数组去重的主要内容,如果未能解决你的问题,请参考以下文章