日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Js面试题(一)--js实现数组去重怎么实现?

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Js面试题(一)--js实现数组去重怎么实现? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法1、創建一個新的臨時數組來保存數組中已有的元素 方法2、使用哈希表存儲已有元素 方法3、使用indexof判斷數組元素第一次出現的位置是否為當前位置 方法4、先排序再去重 第一種方法和第三種方法都使用了indexof(),這個函數的執行機制也會遍歷數組 第二種使用了哈希表,是最快的 第三種也有一個排序的復雜度的計算 ? 詳細代碼如下:
  1 <!-- js實現數組去重 
  2     方法1、創建一個新的臨時數組來保存數組中已有的元素
  3     -->
  4     <!-- js實現數組去重 
  5     方法2、使用哈希表存儲已有元素
  6     -->
  7     <!-- js實現數組去重 
  8     方法3、使用indexof判斷數組元素第一次出現的位置是否為當前位置
  9     -->
 10     <!-- js實現數組去重 
 11     方法4、先排序再去重
 12     -->
 13     <!-- 隨機生成100萬個0-1000的數組結果
 14         方法一執行時間:240
 15         方法二執行時間:5
 16         方法三執行時間:477
 17         方法四執行時間:246
 18         第三種方法總是第二種方法的將近兩倍,而第四種方法與數組的范圍有關
 19 
 20         如果是-100的數組
 21         方法一執行時間:40
 22         方法二執行時間:4
 23         方法三執行時間:64
 24         方法四執行時間:176
 25 
 26         而如果是0-10000
 27         方法一執行時間:2199
 28         方法二執行時間:6
 29         方法三執行時間:4876
 30         方法四執行時間:298
 31         第二種方法是最好的,,,但是是以空間換時間
 32     -->
 33 
 34     <script>
 35         var a = [];
 36         for (var i = 0; i < 1000000; i++) {
 37             a.push(Math.ceil(Math.random() * 10000));
 38         }
 39         Array.prototype.unique1 = function() {
 40             var n = []; //臨時數組
 41             for (var i = 0; i < this.length; i++) {
 42                 //如果當前數組的第i已經保存進了臨時數組,那么跳過
 43                 if (n.indexOf(this[i]) == -1) {
 44                     n.push(this[i]);
 45                 }
 46             }
 47             return n;
 48         }
 49         Array.prototype.unique2 = function() {
 50             var hash = [],
 51                 n = []; //hash哈希表,n臨時數組
 52             for (var i = 0; i < this.length; i++) {
 53 
 54                 if (!hash[this[i]]) { //如果hash表中沒有當前項
 55                     hash[this[i]] = true; //存入哈希表
 56                     n.push(this[i]); //當前元素push到臨時數組
 57                 }
 58             }
 59             return n;
 60         }
 61         Array.prototype.unique3 = function() {
 62             var n = [this[0]];
 63             for (var i = 1; i < this.length; i++) {
 64                 //如果當前數組元素在數組中出現的第一次的位置不是i
 65                 //說明是重復元素
 66                 if (this.indexOf(this[i]) == i) {
 67                     n.push(this[i]);
 68                 }
 69             }
 70             return n;
 71         }
 72         Array.prototype.unique4 = function() {
 73             this.sort(function(a, b) {
 74                 return a - b;
 75             });
 76             var n = [this[0]];
 77             for (var i = 1; i < this.length; i++) {
 78                 if (this[i] != this[i - 1]) {
 79                     n.push(this[i]);
 80                 }
 81             }
 82             return n;
 83         }
 84         var begin1 = new Date();
 85         a.unique1();
 86         var end1 = new Date();
 87         console.log('方法1的執行時間:' + (end1 - begin1));
 88         var begin2 = new Date();
 89         a.unique2();
 90         var end2 = new Date();
 91         console.log('方法2的執行時間:' + (end2 - begin2));
 92         var begin3 = new Date();
 93         a.unique3();
 94         var end3 = new Date();
 95         console.log('方法3的執行時間:' + (end3 - begin3));
 96         var begin4 = new Date();
 97         a.unique4();
 98         var end4 = new Date();
 99         console.log('方法4的執行時間:' + (end4 - begin4));
100     </script>
四種方法執行時間如下: 就分享到這些,下次繼續···

分享一下我的微信公眾號,分享攝影與編程,謝謝大家的關注

轉載于:https://www.cnblogs.com/huihappy/p/10800727.html

總結

以上是生活随笔為你收集整理的Js面试题(一)--js实现数组去重怎么实现?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。