陣列去重的各種方法速度對比

2021-09-13 09:56:36 字數 1968 閱讀 2858

// 自動生成陣列的函式

function randomarr (n)

return arr;

}

執行上面函式,的到的arr1陣列長度為50000,因為js執行速度很快,只有長度很大時,才能看到各個方法的執行速度的差別

注意 arr2到arr7不能簡單的用賦值,否則arr1改變後,arr2到arr7也相應改變了

// 七個相同的陣列 並且陣列長度要足夠大才能對比出來

var n = 50000;

var arr1 = randomarray(n);

var arr2 = [...arr1];

var arr3 = [...arr1];

var arr4 = [...arr1];

var arr5 = [...arr1];

var arr6 = [...arr1];

var arr7 = [...arr1];

/**

* 陣列去重方法1: 有相同就跳過

*/function unique (arr)

}newarr.push(arr[i]);

}return newarr;

}/**

* 陣列去重方法2:有相同就刪除後面的

*/function unique2 (arr) }}

return arr;

}/**

* 陣列去重方法3:利用物件屬性不能相同去重

*/function unique3 (arr) , newarr = ;

for (var i = 0; i < arr.length; i++)

}return newarr;

}/**

* 陣列去重方法4:陣列遞迴去重

*/function unique4 (arr)

}return arr;

}/**

* 陣列去重方法5:indexof/foreach/map/filter

*/function unique5 (arr)

if (arr.indexof(item, index + 1) === -1)

});return newarr;

}/**

* 陣列去重方法6:es6 new set()

*/function unique6 (arr)

/*** 陣列去重方法7:es6 [...]

*/function unique7 (arr)

最後,需要乙個函式呼叫以上陣列去重的方法,並進行時間計算

// 計算時間

function calcruntime (func, arr)

// 開始計算

calcruntime(unique,arr1);

calcruntime(unique2,arr2);

calcruntime(unique3,arr3);

calcruntime(unique4,arr4);

calcruntime(unique5,arr5);

calcruntime(unique6,arr6);

calcruntime(unique7,arr7);

unique: 2921.845947265625ms

unique2: 3580.632080078125ms

unique3: 12.416259765625ms

unique4: 617.23779296875ms

unique5: 2497.0478515625ms

unique6: 20.821044921875ms

unique7: 12.881103515625ms

可以看出:

第6種和第7種方法利用es6語法去重,不僅**簡單,執行速度也快

利用物件key值的唯一性去重,執行速度也是很快的,其它方法就比較劣勢了

陣列去重方法對比

模擬了以下兩個陣列,乙個陣列長度100000 另乙個長度為50000 下面的方法都是針對這兩個陣列來做的測試 陣列長度越長 速度差異會越大 let arr1 array.from new array 100000 x,index let arr2 array.from new array 50000...

陣列去重的多種方法

陣列去重的方法有很多,廢話不多說下面只寫3種,分別是從複雜到簡單 1.利用foreach進行輪詢需要去重的陣列,然後通過判斷新陣列 這個新陣列需要在輪詢之前建立乙個空陣列 中是否包含進行新增不重複的每一項得到新陣列 此方法的缺點 function removedup arry return noma...

陣列去重的多種方法

1.將陣列的每乙個元素依次與其他元素做比較,發現重複元素,利用陣列方法splice 刪除重複元素 var arr 1 23,1 1,1 3,23 5,6 7,9 9,8 5,5 5,5 function norepeat arr return arr var arr2 norepeat arr co...