数组去重的各种方法速度对比
生活随笔
收集整理的這篇文章主要介紹了
数组去重的各种方法速度对比
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先需要一個自動生成數組的函數
// 自動生成數組的函數function randomArr (n) {let arr = [];for (let i = 1; i <= n; i++) {arr.push(Math.floor(Math.random() * (i + 1)));}return arr;}接下來是數組去重的各種方式
/*** 數組去重方法1: 有相同就跳過*/function unique (arr) {var len = arr.length;var newArr = [];for (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {if (arr[i] === arr[j]) {j = ++i;}}newArr.push(arr[i]);}return newArr;}/*** 數組去重方法2:有相同就刪除后面的*/function unique2 (arr) {var len = arr.length;for (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {if (arr[i] === arr[j]) {arr.splice(j, 1);j--;len--;}}}return arr;}/*** 數組去重方法3:利用對象屬性不能相同去重*/function unique3 (arr) {var obj = {}, newArr = [];for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {obj[arr[i]] = 1;newArr.push(arr[i]);}}return newArr;}/*** 數組去重方法4:數組遞歸去重*/function unique4 (arr) {arr.sort();var len = arr.length;for (var i = 0; i < len - 1; i++) {if (arr[i] === arr[i + 1]) {arr.splice(i + 1, 1);i--;len--;}}return arr;}/*** 數組去重方法5:indexOf/forEach/map/filter*/function unique5 (arr) {var newArr = [];arr.forEach(function(item, index, arr){// if(newArr.indexOf(item)===-1){// newArr.push(item);// }if (arr.indexOf(item, index + 1) === -1) {newArr.push(item);}});return newArr;}/*** 數組去重方法6:es6 new Set()*/function unique6 (arr) {// return [...new Set(arr)];return Array.from(new Set(arr));}/*** 數組去重方法7:es6 [...]*/function unique7 (arr) {return [...new Set(arr)];}計算各個方法所花費的時間
計算結果來了
unique: 2921.845947265625ms
unique2: 3580.632080078125ms
unique3: 12.416259765625ms
unique4: 617.23779296875ms
unique5: 2497.0478515625ms
unique6: 20.821044921875ms
unique7: 12.881103515625ms
小結
可以看出:
總結
以上是生活随笔為你收集整理的数组去重的各种方法速度对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《2018面向对象程序设计(java)课
- 下一篇: 文件目录管理二