給出如下數組es6
var arr1 = new Array('1','2','3','3','5','4','5','6','5','5','88');數組
實現對數組的去重oop
一、 雙重for循環去重this
Array.prototype.Duplicate = function() { let arr = this; for(let i = 0; i < arr.length-1; i++) { for (let j = i+1; j < arr.length; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1); j--; // 刪除元素以後,須要將數組的長度也減1,不然沒法去除掉後面相同的值. }; }; }; return arr; }
二、 利用遞歸調用去重spa
Array.prototype.Duplicate = function() { let arr = this; arr.sort(); function loop(index) { if (index > 1) { if (arr[index] == arr[index-1]) { arr.splice(index, 1); }; loop(index-1); }; }; loop(arr.length-1); return arr; }
三、 利用對象去重prototype
Array.prototype.Duplicate = function() { let arr = this; let obj = {} let arr2 = [] for (let i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = true; arr2.push(arr[i]); } }; return arr2; }
四、 利用indexOfcode
Array.prototype.Duplicate = function() { let arr = this; let arr2 = [] for (let i = 0; i < arr.length; i++) { if (arr2.indexOf(arr[i]) == -1) { arr2.push(arr[i]); } }; return arr2; }
五、 利用es6 includes方法判斷對象
Array.prototype.Duplicate = function() { let arr = this; let arr2 = []; for (let i = 0; i < arr.length; i++) { if (!arr2.includes(arr[i])) { arr2.push(arr[i]); } } return arr2 }
console.log(arr1.Duplicate().toString());blog
// 1,2,3,5,4,6,88遞歸