數組去重的方法

今天來研究下數組去重的方法,從網上查看了些資料,進行了些整理,把可能會產生錯誤結果的方法刪除了,記錄下,加油。json

1.第一種方法:思路以下數組

  (1)新建一個新的數組存放去重的結果。this

  (2)for循環中每次從原數組取出一個元素,用這個元素循環與結果數組對比,若是沒有重複,則push到新數組中。spa

  

       Array.prototype.removeRepeat1 = function () {
            var res = [this[0]];
            for (var i = 1; i < this.length; i++) {
                var repeat = false;
                for (var j = 0; j < res.length; j++) {
                    if (this[i] == res[j]) {
                        repeat = true;
                        break;
                    }
                }
                if (!repeat) {
                    res.push(this[i]);
                }
            }
            return res;
        }
        var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0];
        console.log(arr.removeRepeat1());        

2.第二種方法,原理以下prototype

  建立一個新的數組存放結果數組,建立一個空對象來進行判斷,for循環時,每次取出一個元素與對象進行對比,code

  若是這個元素不重複,則把它存放到結果數組中,同時把這個元素的內容做爲對象的一個屬性,並賦值爲真,存入到第2步創建的對象中。對象

  

Array.prototype.removeRepeat2 = function(){
        var res = [];
        var json = {};
        for(var i=0;i<this.length;i++){
            if(!json[this[i]]){
                res.push(this[i]);
                json[this[i]] = true;
            }
        }
        return res;
    };
    var arr = [112,112,34,'你好',112,112,34,'你好','str2','str1'];
    console.log(arr.removeRepeat2());

3.第三種方法:直接刪除後邊重複元素,直接上代碼blog

 

    Array.prototype.removeRepeat3 = function(){
        for(var i=0;i<this.length;i++){
            for(var j=i+1;j<this.length;j++){
                if(this[i] === this[j]){
                    this.splice(j,1);
                    j--;
                }
            }
        }
        return this;
    };
    var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
    console.log(arr.removeRepeat3());
相關文章
相關標籤/搜索