国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS判斷數組重復

王軍 / 314人閱讀

摘要:背景項目需要前端判斷已建列表是否存在重復的數據,經過校驗后再進行下一步。整體思路是將數組中的數據放入中,然后比較和原數組的長度,如果不一致,那么說明存在重復的數據。

背景

項目需要前端判斷已建列表是否存在重復的數據,經過校驗后再進行下一步。以下為逐步改良的過程,雖然整個過程并不復雜而且沒什么技術含量,還是記錄一下以便他人。

最單純的方法

最單純的方法當然是直接兩層for循環判斷,但是如果當數據量大的時候,計算量也將指數上漲,所以非常不好,果斷拋棄。

排序后查重

這種思路主要是拿到數據之后先封裝到數組中,然后對數組進行一次排序,然后從頭到尾遍歷看自己的后一個是否相同即可,如果相同,直接返回。這種方法多出了一次對實際業務沒有用處的排序操作,也有些缺陷。

利用Set的特性

Set的特性是不重復,所以思考可以利用這一點進行比對。整體思路是將數組中的數據放入Set中,然后比較Set和原數組的長度,如果不一致,那么說明存在重復的數據。
代碼如下:

var sourceArray = [1,2,3,4,5];
var tempSet = new Set();

for(i = 0;i

就在我美滋滋的已經把算法實現到我們項目的時候,前端的妹子告訴我Set的兼容性存在問題,所以不得不拋棄了這個想法,進入了下一步的優化。

位圖的思想

這個標題是我根據位圖排序的思想起的名字,(位圖排序是一種很好玩的排序思路,有興趣可以百度)。這種優化的主要思路是設置了一個標志位的數組,如果存在則對應位置為true。如果某一個數據發現自己的位置已經是true了,那么說明存在重復的數據了。
代碼如下:

var sourceArray = [1,2,3,4,5,4,5];
var flagArray = new Array();

for(i = 0;i
思路的發展

開始動手的時候已經知道兩層循環是不行的,所以一定不會采取這種方式,然后想到的是是否已經存在重復的輪子,也就是說,有沒有函數能直接判斷重復,查了一下好像沒有,于是想到了Set這個數據結構的特性,往這個上面靠,所以誕生了第三種方案,但是后來又發現兼容性問題,所以最終采用了第四種方案。
整體的思路就是這樣,或許知道了某一種優化可以牢記于心,以后直接用,但是如果掌握了優化的思路,就可以面對各種場景思考方案,更活而不是死記。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84728.html

相關文章

  • JS數組專題2?? ? 數組去重

    距離上次發文,已經有一段時間了,最近工作比較忙,這不眼看快雙十一了,就相當于給大家一些福利吧! showImg(https://segmentfault.com/img/remote/1460000016538082?w=250&h=250); 一、什么是數組去重 簡單說就是把數組中重復的項刪除掉,你 GET 到了嗎 ?下面我將簡單介紹下幾種基本的方法及其優缺點。 二、方法匯總 兩層循環 無相同...

    tunny 評論0 收藏0
  • JS數組扁平化去并除其中重復部分數據,最終得到一個升序且不重復數組

    摘要:題目已知如下數組編寫一個程序將數組扁平化去并除其中重復部分數據,最終得到一個升序且不重復的數組實現數組扁平化去重排序解析數組扁平化判斷數組子元素是否為數組是的話進行遞歸否則把子元素變為數組的執行結果為的執行結果為數組去重通過實現 題目: 已知如下數組:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, ...

    godruoyi 評論0 收藏0
  • 嘮叨一下js對象與哈希表那些事

    摘要:的擴展知識對于哈希表來說,最重要的莫過于生成哈希串的哈希算法和處理沖突的策略了。由于鏈表的查找需要遍歷,如果我們將鏈表換成樹或者哈希表結構,那么就能大幅提高沖突元素的查找效率。 最近在整理數據結構和算法相關的知識,小茄專門在github上開了個repo https://github.com/qieguo2016...,后續內容也會更新到這里,歡迎圍觀加星星! js對象 js中的對象是基...

    Nosee 評論0 收藏0
  • es6 Set和WeakSet

    摘要:返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。上面代碼中,方法返回的遍歷器,同時包括鍵名和鍵值,所以每次輸出一個數組,它的兩個成員完全相等。因此,適合臨時存放一組對象,以及存放跟對象綁定的信息。 Js大部分歷史時期都只存在一種集合類型,也就是數組類型。數組在 JS 中的使用正如其他語言的數組一樣,但缺少更多類型的集合導致數組也經常被當作隊列與棧來使用。數組只使用了數值...

    marser 評論0 收藏0

發表評論

0條評論

王軍

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<