今天來研究下數組去重的方法,從網上查看了些資料,進行了些整理,把可能會產生錯誤結果的方法刪除了,記錄下,加油。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());