以下是我針對網上三種高效率方法總結與效率測試,如果大家有更好的意見或建議也可以提出,大家共勉學習。
數組去重法1:
Array.prototype.unique1 = function(){ console.time("數組去重法1"); //記錄開始執行的時間 var arr = []; //創建一個臨時數組 var obj = {}; //創建一個空對象 for(var i = 0; i < this.length; i++){ //遍歷當前要去重的數組 if(!obj[this[i]]){ //判斷obj對象中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 obj[this[i]] = 1; //將當前項存入obj對象 } } console.timeEnd("數組去重法1"); //記錄結束執行的時間 return arr; }
數組去重法2:
Array.prototype.unique2 = function(){ console.time("數組去重法2"); //記錄開始執行的時間 var arr = []; //創建一個臨時數組 for(var i = 0; i < this.length; i++){ //遍歷當前要去重的數組 if(arr.indexOf(this[i]) == -1){ //判斷臨時數組中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 } } console.timeEnd("數組去重法2"); //記錄結束執行的時間 return arr; }
數組去重法3:
Array.prototype.unique3 = function(){ console.time("數組去重法3"); //記錄開始執行的時間 var arr = [this[0]]; //創建一個臨時數組,並將要去重數組的第一項存入臨時數組 for(var i = 1; i < this.length; i++) { //從要去重數組第二項開始遍歷 if (this.indexOf(this[i]) == i){ //判斷臨時數組中是否存有當前項,沒有則執行 arr.push(this[i]); //將當前項push到臨時數組中 } } console.timeEnd("數組去重法3"); //記錄結束執行的時間 return arr; }
效率測試方法:
var arr1 = []; //創建一個要去重的數組 for(var i = 0; i < 200000; i++){ //遍歷200000個數據 arr1.push(parseInt(Math.random() * 10) + 1); //將所有數據返回為隨機數(1-10之間)的數, 並push到要去重的數組中 } console.log(arr1.unique1()); //打印數組去重法1的執行時間 console.log(arr1.unique2()); //打印數組去重法2的執行時間 console.log(arr1.unique3()); //打印數組去重法3的執行時間
效率測試結果:
總結
以上就是關於JavaScript幾種數組去重的方法效率測試,希望測試的結果對大家選擇使用數組去重方法能有所幫助,如果有疑問大家可以留言交流。謝謝大家對的支持。