多種js數(shù)組去重的方法

require(['jquery'], function($) {

    // 數(shù)組去重

    // 獲取數(shù)組
    function getArray(length) {
        var tmpArray = [];
        for (var i = 0; i < length; i++) {
            tmpArray.push(Math.floor(Math.random() * 10 + 1));
        }
        return tmpArray;
    }


    /*
        開始介紹下jquery的去重方法,簡單粗暴
    */

    var myArray = getArray(20);

    console.log("排序前:", myArray);

    console.log("排序后:", $.unique(myArray));

    /*
        方法一(慢到?jīng)]朋友)

        1.構(gòu)建一個新的數(shù)組存放結(jié)果

        2.for循環(huán)中每次從原數(shù)組中取出一個元素,用這個元素循環(huán)與結(jié)果數(shù)組對比

        3.若結(jié)果數(shù)組中沒有該元素,則存到結(jié)果數(shù)組中

    */
    function unique_method1(array) {
        var tmpArray = [array[0]];
        for (var i = 1, len = array.length; i < len; i++) {
            var flag = false;
            for (var j = 0, tmpLen = tmpArray.length; j < tmpLen; j++) {
                if (array[i] == tmpArray[j]) {
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                tmpArray.push(array[i])
            }
        }
        return tmpArray;
    }
    var myArray = getArray(20);

    console.log("排序前:", myArray);

    console.log("排序后:", unique_method1(myArray));

    /*
            方法二:(高效)

            1.創(chuàng)建一個新的數(shù)組存放結(jié)果,創(chuàng)建一個空對象來記錄存放

            2.for循環(huán)時,每次取出一個元素與記錄存放進行對比,如果這個元素不重復(fù),
              則把它存放到結(jié)果數(shù)組中,并在對象中記錄下來。
    */

    function unique_method2(array) {
        var tmpArray = [];
        var tmpObj = {};
        for (var i = 0, len = array.length; i < len; i++) {
            if (!tmpObj[array[i]]) {
                tmpArray.push(array[i]);
                tmpObj[array[i]] = 1;
            }
        }
        return tmpArray;
    }

    var myArray = getArray(20);

    console.log("排序前:", myArray);

    console.log("排序后:", unique_method2(myArray));

    /*
            方法三(高效,但改變順序)

            1.先將原數(shù)組進行排序

            2.檢查原數(shù)組中的第i個元素 與 結(jié)果數(shù)組中的最后一個元素是否相同,
              因為已經(jīng)排序,所以重復(fù)元素會在相鄰位置

            3.如果不相同,則將該元素存入結(jié)果數(shù)組中
    */

    function unique_method3(array) {
        array.sort();
        var tmpArray = [array[0]];
        for (var i = 1, len = array.length; i < len; i++) {
            if (array[i] !== tmpArray[tmpArray.length - 1]) {
                tmpArray.push(array[i]);
            }
        }
        return tmpArray;
    }

    var myArray = getArray(20);

    console.log("排序前:", myArray);

    console.log("排序后:", unique_method3(myArray));



})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容