zoukankan      html  css  js  c++  java
  • 关于数组的去重方法以及sort( ),函数的用法

    数组的去重真可谓是千变万化,下面简单的列出了几重,以供参考:,再顺便说一下使用sort( )函数的注意点:

    <script>
        /*1.利用冒泡排序的原理,取出每一项与新数组每一项作比较,如果没有重复的,就添加到新数组中*/
        function mt1 () {
            var newArr = [];
            for ( var i = 0 ; i < arr.length ; i ++ ) {
                var flag = true;
                for ( var j = 0 ; j < newArr.length ; j ++ ) {
                    if ( arr[ i ] == newArr[ j ] ) {
                        flag = false;
                    }
                }
                if ( flag ) {
                    newArr.push ( arr[ i ] );
                }
            }
            return newArr;
        }
    //    -----------------------------------------
        /*2.把arr的每一项作为属性存储到对象中,进行判断,把不重复的添加到新数组中*/
        function mt2 ( arr ) {
            var obj = {};
            var newArr = [];
            for ( var i = 0 ; i < arr.length ; i ++ ) {
                if ( ! obj[ arr[ i ] ] ) {
                    obj[ arr[ i ] ] = true;
                    newArr.push ( arr[ i ] )
                }
            }
            return newArr;
        }
    //    -----------------------------------------------
        /*3.利用indexof的方法,如果新数组中没有这一项,就把这项存储到新数组中*/
        function mt3 ( arr ) {
            var newArr = [];
            for ( var i = 0 , len = arr.length ; i < len ; i ++ ) {
                if ( newArr.indexOf ( arr[ i ] ) == - 1 ) {
                    newArr.push ( arr[ i ] );
                }
            }
            return newArr
        }
    //    ----------------------------------------------------
        /*4.使用数组自带的排序方法,进行排序,若相邻的两项不相等,则存储到新数组中*/
        function mt4 ( arr ) {
            arr.sort ();
            var newArr = [ arr[ 0 ] ];
            for ( var i = 0 , len = arr.length ; i < len ; i ++ ) {
                if ( arr[ i ] != newArr[ newArr.length - 1 ] ) {
                    newArr.push ( arr[ i ] );
                }
            }
            return newArr;
        }
    //    ------------------------------------------------------
        /*5.ES6中通过new Set()构建的数组。不会有重复的值*/
        function mt5 ( arr ) {
            return Array.from ( new Set ( arr ) )
        }
    //    -----------------------------------------------------
        /*6.通过扩展运算符和new Set()生成*/
        function mt6 ( arr ) {
            return [...new
            Set ( arr )
        ]
        }
    
        var arr = [ 1 , 2 , 3 , 3 , 2 , 1 , 5 , 6 , 7 ];
        console.log ( mt1 ( arr ) )
        console.log ( mt2 ( arr ) )
        console.log ( mt3 ( arr ) )
        console.log ( mt4 ( arr ) )
        console.log ( mt5 ( arr ) )
        console.log ( mt6 ( arr ) )
    //            结果全部为[1, 2, 3, 5, 6, 7]
    //-----------------------------------------------------------
        //sort
        var array = [ 10 , 2 , 12 , 4 , 5 , 10 , 78 , 5 , 5 , 55 , 96 , 2 ];
        console.log ( array );              /*原数组*/
        console.log ( array.sort () );  /*直接排序,没有效果*/
    
        //使用sort()数字排序,你必须通过一个函数作为参数来调用。
    
        function compare ( a , b ) {
            return b - a;
        }
        console.log ( array.sort ( compare ) );   /*调用函数排序*/
    //    [96, 78, 55, 12, 10, 10, 5, 5, 5, 4, 2, 2]
    ★★前端新手一枚,写的内容是自己对知识点的理解,如有不妥之处,还请各位大牛不吝赐教,批评指正.谢谢★★
  • 相关阅读:
    【第36题】2019年OCP认证12C题库062考试最新考试原题
    004 基本命令 touch cp mv 命令
    003 基本指令 mkdir rm -rf(暴力删除)
    002 文件目录类的指令 cd ls
    001 指定运行级别
    005 抽象工厂模式
    006 使用类加载器加载资源文件
    004 方法反射
    003 属性反射
    003 工厂方法模式
  • 原文地址:https://www.cnblogs.com/mysmalldream/p/7009338.html
Copyright © 2011-2022 走看看