清空数组

方式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排序

归并三个数组。

Last modification:January 30, 2020
如果觉得我的文章对你有用,请随意赞赏