数组去重 和 数组排序方法总结

数组排序

//方法1
    // 数组中前一项跟后一项作比较,如果前边的比后边的大,则前后换一下位置
    function px1(ary){
        var len=ary.length,temp;
        if(len<=1){
            return ary;
        }
        for(var i=0;i<len;i++){
            for(var j=i+1;j<len;j++){
                if(ary[i]>ary[j]){
                    temp=ary[i];
                    ary[i]=ary[j];
                    ary[j]=temp;
                }
            }
        }
        return ary;
    }
    var ary1=[3,1,8,6,9,0,12];
    console.log(px1(ary1));
    //方法2 取出数组的中间值
    // 将数组中的每一项跟中间值midVal作比较
    // 比midVal小的放left数组中,比midVal大的放到right数组中,以此循环 然后再将数组拼接
    function px2(ary){
        if(ary.length <= 1){
            return ary;
        }
        var midIndex=Math.floor(ary.length/2),
            midVal=ary.splice(midIndex,1),
            left=[],
            right=[];
        for(var i=0;i<ary.length;i++){
            if(ary[i] < midVal){
                left.push(ary[i]);
            }else{
                right.push(ary[i]);
            }
        }
        return px2(left).concat(midVal,px2(right));
    }
    var ary2=[3,1,8,6,9,0,12];
    console.log(px2(ary2));
数组排序

数组去重

//方法1 简单去重
    function qc1(ary){
        var len=ary.length,temp=[];
        for(var i=0;i<len;i++){
            if(temp.indexOf(ary[i]) == -1){
                temp.push(ary[i]);
            }
        }
        return temp;
    }
    var ary1=[1,6,2,5,2,2,6,1];
    console.log(qc1(ary1));
    //方法2 把数组排序后,前一项和后一项作比较,如果不一致的话添加到新数组
    function qc2(ary){
        var len=ary.length,temp=[];
        ary.sort();
        for(var i=0;i<len;i++){
            if(ary[i]!=ary[i+1]){
                temp.push(ary[i]);
            }
        }
        return temp;
    }
    var ary2=[1,6,2,5,2,2,6,1];
    console.log(qc2(ary2));
    //方法3 通过indexOf判断元素在该数组中第一次出现位置的索引值是不是当前的i,如果是的话就添加到新数组中
    function qc3(ary){
        var len=ary.length,temp=[];
        for(var i=0;i<len;i++){
            if(ary.indexOf(ary[i]) == i){
                temp.push(ary[i]);
            }
        }
        return temp;
    }
    var ary3=[1,6,2,5,2,2,6,1];
    console.log(qc3(ary3));
    //方法4
    function qc4(ary){
        var len=ary.length,temp=[];
        for (var i=0;i<len;i++){
            for(var j=1;j<l;j++){
                if(ary[i] === ary[j]){
                    temp.push(ary[i])
                }
            }
        }
        return temp;
    }
    var ary4=[1,6,2,5,2,2,6,1];
    console.log(qc3(ary4));
    //方法5
    function qc5(array){
        var temp = {}, r = [], len = array.length, val, type;
        for (var i = 0; i < len; i++) {
            val = array[i];
            type = typeof val;
            if (!temp[val]) {
                temp[val] = [type];
                r.push(val);
            } else if (temp[val].indexOf(type) < 0) {
                temp[val].push(type);
                r.push(val);
            }
        }
        return r;
    }

    var ary5 =[1,6,2,5,2,2,6,1];
    console.log(qc5(ary5));
数组去重

 

posted @ 2018-03-09 11:25  dongxiaolei  阅读(788)  评论(0编辑  收藏  举报