zoukankan      html  css  js  c++  java
  • 数组去重 和 数组排序方法总结

    数组排序

    //方法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));
    数组去重
  • 相关阅读:
    创建型设计模式-原型模式(单例) MemberwiseClone()
    Oracle 查看没有释放的链接 和删除,相关sql
    win10 安装 SQL Developer 工具
    修改nuget包默认存放路径 win10
    使用端口查询
    未能加载文件或程序集“Newtonsoft.Json, Version=12.0.0.0,
    微信错误码
    sqlserver 时间转换记录
    Homebrew 使用指南
    在Mac检查安装的.net core 版本
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/8532885.html
Copyright © 2011-2022 走看看