清空数组
方式1
let arr=[1,2,3];
console.log(arr);
arr.length=0;
console.log(arr);
方式2
let arr=[1,2,3];
console.log(arr);
arr.splice(0);
console.log(arr);
方式3
let arr=[1,2,3];
console.log(arr);
arr=[];
console.log(arr);
操作方式的区别:在javascript中上面3中操作方式归为了两类,1、2是一种方式是直接变引用地址的内容,第三种方式相当于在堆内存中又申请了一个[]数组类型的内存。
简单数组去重
方式1
let x=[1,3,4,5,1,3,2,1,2,4];
let y=[];
// x 循环
for(let i=0;i<x.length;i++){
//看一看这个元素y里是不是有,有的话,算了;没有则push
for(var j=0;j<y.length;j++){
if(x[i]===y[j]){
break;
}
}
//不重复,push,重复,算了
if(j>=y.length){
y.push(x[i]);
}
}
时间复杂度:与x的元素个数成正比。
x.length N
0+1+2+3….(N-1) = N(N-1)/2 = (1/2)N^2 – (1/2)N = N^2
方式2
let x=[1,3,4,5,1,3,2,1,2,4];
let y=[];
x.sort();
//x排序、不用每次查找y
for(var i=0;i<x.length;i++){
if(y.length==0 || y[y.length-1]!=x[i]){
y.push(x[i]);
}
}
console.log(y);
时间复杂度:生成y的时间复杂度O(N)
x排序,时间复杂度O(NLogN)堆排序、基于比较的排序,堆排序,时间O(NlogN)
方式3
let x=[1,3,4,5,1,3,2,1,2,4];
let y=[];
var arrMap=[];
for(var i=0;i<x.length;i++){
arrMap[x[i]]=true;
}
for(var j in arrMap){
y.push(+j); //等效于 number(); 强制转换了把字符串转数字
}
console.log(y);
取决于arrMap[]的时间复杂度
1、LogN => N*logN ——– 二叉树
2、1 => N ——– 哈希表 (如果arrMap是hash结构那么复杂度就是这)
复杂一位数组去重?
方法1.使用===判断、方式1适用。
方法2.首先轮询数组,用typeof把number,string,boolean分开
number排序
string排序
boolean排序
归并三个数组。