關於數組的去重方法以及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]
相關文章
相關標籤/搜索