知识巩固——数组去重、排序

var arr=[2,3,2,44,33,3,88,13,'2'];

//遍历数组法
Array.prototype.unique1=function(){
    var start=new Date().getTime();console.log(start);
    var n=[];
    for(var i=0,l=arr.length;i<l;i++){
        if(n.indexOf(arr[i])==-1){
            n.push(arr[i]);
        }
    }
    var end=new Date().getTime();console.log(end);
    var time=end-start;console.log(time);
    return n;
}
//var x=arr.unique1();console.log(x);// [2, 3, 44, 33, 88, 13,'2']
//对象键值对法
    //时间快,空间换时间,占内存大
Array.prototype.unique2=function(){
    var start=new Date().getTime();console.log(start);
    var n = {}, r = [],  val, type; 
    for (var i = 0,len=arr.length; i < len; i++) { 
        val = arr[i]; 
        type = typeof val; 
        if (!n[val]) { 
            n[val] = [type]; 
            r.push(val); 
        } else if (n[val].indexOf(type) < 0) { 
            n[val].push(type); 
            r.push(val); 
        } 
    } 
    var end=new Date().getTime();console.log(end);
    var time=end-start;console.log(time);
    return r;
}
//var x=arr.unique2();console.log(x);
//数组下标判断
Array.prototype.unique3=function(){
    var n=[arr[0]];
    for(var i=1,l=arr.length;i<l;i++){
        if (arr.indexOf(arr[i]) == i) n.push(arr[i]); 
    }
    return n;
}
//var x=arr.unique3();console.log(x);
//排序后相邻去除法
Array.prototype.unique4=function(){
    arr.sort();
    var n=[arr[0]]
    for(var i=0,l=arr.length;i<l;i++){
        if(arr[i]!==n[n.length-1]){
            n.push(arr[i]);
        }
    }
    return n;
}
//var x=arr.unique4();console.log(x);

兼容ie8以下 indexOf函数

if (!Array.prototype.indexOf){ 
    // 新增indexOf方法 
    Array.prototype.indexOf = function(item){ 
        var result = -1, a_item = null; 
        if (this.length == 0){ 
            return result; 
        } 
        for(var i = 0, len = this.length; i < len; i++){ 
            a_item = this[i]; 
            if (a_item === item){ 
                result = i; break; 
            } 
        } 
        return result; 
    } 
} 

数组排序

  冒泡

var arr=[12,3,5,12,15,9,1];
Array.prototype.bubble=function(){
    var l=this.length,d;
    for(var i=0;i<l;i++){
        for(var j=0;j<l;j++){
            if(arr[i]<arr[j]) arr[i]=[arr[j],arr[j]=arr[i]][0];
        }
    }
    return arr;
}

  希尔

111111111111

posted @ 2017-07-21 13:45  HHLweb  阅读(144)  评论(0编辑  收藏  举报