1. 程式人生 > >js之數組去重的方法

js之數組去重的方法

封裝 格式 turn true 最快 函數 func 如果 ons

數組去重?即去除數組中重復的元素...

首先第一種方法就是利用set集合的特性實現去重(其實set用法很多,有興趣的可以多去了解下);

  那什麽是set集合呢?set集合是一種新的數據存儲格式;

  set語法:new Set()

    參數:一個數組

set集合可以稱為史上最快的一種去重方式,如下:

var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1 ];
var set = new Set(arr);
console.log(set)

第二種方法則是先封裝好一個函數判斷數組中是否存在某個值,然後再利用這個原理進行數組去重;代碼如下:

//判斷數組中是否存在某個值
function has(arr, n){ var bStop = false; for(var i in arr){ if(arr[i] == n){ bStop = true; break; } } return bStop; } function norepeat2(arr){ var newArr = []; for(var i in arr){ if(!has(newArr, arr[i])){ newArr.push(srr[i]) } }
return newArr; }

第三種方法呢,則是利用es5中新增的方法indexOf去重;

  indexOf()作用:判斷某個字符是否存在。如果存在,則返回相對應的下標,不存在則返回-1;

  究竟怎麽實現呢,相信小可愛們都已經想到了~代碼如下:

function norepeat3(arr){
    //創建好一個新的數組
    var newArr = [];
    //循環遍歷arr
    for(var i in arr){
        //判斷新數組,如果不存在arr的第i個,不存在則添加到新數組當中
        if(newArr.indexOf(arr[i]) == -1){
            newArr.push(arr[i])
        }
    }
    
return newArr }

第四種方法則利用sort排序,創建一個新的數組然後傳入原數組的第0個;循環遍歷的時候要註意i的初始值從1開始。代碼如下:

Array.prototype.norepeart4 = function(){
    //先排序
    this.sort();
    //創建一個新的數組並存入數組的第0個
    var newArr = [this[0]];
    //循環遍歷傳入的數組
    for(var i = 1;i<this.length;i++){
        //利用每個新數組中值與傳入數組的第i個進行計較,不存在則push到新數組中
        if(newArr[newArr.length-1] != this[i]){
            newArr.push(this[i])
        }
    }
    //返回新的數組
    return newArr;
}

只有想不到沒有寫不出!數組去重的方法很多很多,在這裏就簡單的列舉四種。望大家喜歡(嘻嘻)

js之數組去重的方法