日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

一. 方法一(會改變數組順序)

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

思路:將數組排序之后,數組中相同的元素只可能出現在相鄰的位置上。

注意:這里進行比較時,一定要用不全等符號!==,因為 "1" !== 1 為true, "1" != 1 為false.

二. 不改變數組順序的方法

1. 方法一

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

注意:這里的'112' 和 112不應該是重復的,所以都應該保留,所以在hash表中,應該把類型也拼接成key :isIn[typeof this[i] + this[i]]

2. 方法二

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

此處要處理的數組僅包含數字字符串.

var arr= ["a","a","1",1,2,2,3];

方法一:(雙重for循環)

主要思路:將每一個元素和它后面的所有元素進行比較,若沒有重復,則推入數組, 若有重復,則將重復項的最后一項推入數組.

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

方法二:

主要思路:遍歷數組元素,若該元素在結果數組中不存在,則將其推入數組;

indexOf:查找指定元素在數組的首次出現的索引,若不存在該元素,則返回-1;

indexOf大小寫敏感,寫的時候千萬要小心,順便把typeof也記住吧,兩者的'o'是不一樣的;

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

方法三:

主要思路:先把原數組的第一個元素推入結果數組,從原數組的第二項開始,

判斷該項元素在原數組中受首次出現的位置是否為當前位置,若是,則向數組中推入該元素。

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

方法四(借助對象)

主要思路:通過一個對象來標志元素是否存在于結果數組,若不存在,則將該元素推入結果數組,并將其標志為存在

遺憾的是,此方法沒能區分出數字和字符,1和'1'只保留了一個。

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

方法五

主要思路:先排序,然后判斷緊隨其后的元素跟它是否重復,若不重復,則說明該元素是唯一的,故將其推入數組

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

方法六(借助ES6的Array.from()和Set數據結構)

主要思路:先把數組轉換為Set數據結構,濾除多余的重復元素,再將其轉換為數組

Set是ES6提供的一個數據結構,里面的元素不能出現重復,學過高一數學的你們應該都能理解集合的概念吧

Array.from()ES6新增的數組方法,該方法可以將一個類數組對象或可遍歷對象轉換成真正的數組。

JavaScript數組去重的方法有哪些?學會這9招,再也不怕算法題了

 

總結:

數組去重的方法有很多種,但少不了兩種結構:循環結構(為了處理每一個數組元素,必然少不了它)和分支結構(為了判斷是否重復,也肯定要使用到它)。 如果說代碼中沒有出現以上兩種邏輯,要么是采用了遞歸的思路,要么就是利用到的數據結構(比如Set數據結構)或方法已經幫我們處理了那些邏輯。

分享到:
標簽:數組 JavaScript
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定