js數(shù)組去重的四種實(shí)用方法_javascript技巧
來源:懂視網(wǎng)
責(zé)編:小采
時間:2020-11-27 21:27:02
js數(shù)組去重的四種實(shí)用方法_javascript技巧
js數(shù)組去重的四種實(shí)用方法_javascript技巧:面試前端必須準(zhǔn)備的一個問題:怎樣去掉Javascript的Array的重復(fù)項。據(jù)我所知,百度、騰訊、盛大等都在面試?yán)锍鲞^這個題目。這個問題看起來簡單,但是其實(shí)暗藏殺機(jī)。 考的不僅僅是實(shí)現(xiàn)這個功能,更能看出你對計算機(jī)程序執(zhí)行的深入理解。 我總共想出了三種算法
導(dǎo)讀js數(shù)組去重的四種實(shí)用方法_javascript技巧:面試前端必須準(zhǔn)備的一個問題:怎樣去掉Javascript的Array的重復(fù)項。據(jù)我所知,百度、騰訊、盛大等都在面試?yán)锍鲞^這個題目。這個問題看起來簡單,但是其實(shí)暗藏殺機(jī)。 考的不僅僅是實(shí)現(xiàn)這個功能,更能看出你對計算機(jī)程序執(zhí)行的深入理解。 我總共想出了三種算法

面試前端必須準(zhǔn)備的一個問題:怎樣去掉Javascript的Array的重復(fù)項。據(jù)我所知,百度、騰訊、盛大等都在面試?yán)锍鲞^這個題目。這個問題看起來簡單,但是其實(shí)暗藏殺機(jī)。 考的不僅僅是實(shí)現(xiàn)這個功能,更能看出你對計算機(jī)程序執(zhí)行的深入理解。
我總共想出了三種算法來實(shí)現(xiàn)這個目的:
其中第1種和第3種方法都用到了數(shù)組的indexOf方法。此方法的目的是尋找存入?yún)?shù)在數(shù)組中第一次出現(xiàn)的位置。很顯然,js引擎在實(shí)現(xiàn)這個方法的時候會遍歷數(shù)組直到找到目標(biāo)為止。所以此函數(shù)會浪費(fèi)掉很多時間。 而第2中方法用的是hash表。把已經(jīng)出現(xiàn)過的通過下標(biāo)的形式存入一個object內(nèi)。下標(biāo)的引用要比用indexOf搜索數(shù)組快的多。
為了判斷這三種方法的效率如何,我做了一個測試程序,生成一個10000長度的隨機(jī)數(shù)組成的數(shù)組,然后分別用幾個方法來測試執(zhí)行時間。 結(jié)果表明第二種方法遠(yuǎn)遠(yuǎn)快于其他兩種方法。 但是內(nèi)存占用方面應(yīng)該第二種方法比較多,因為多了一個hash表。這就是所謂的空間換時間。 就是這個測試頁面,你也可以去看看。
我寫了第四種方法:
這個方法的思路是先把數(shù)組排序,然后比較相鄰的兩個值。 排序的時候用的JS原生的sort方法,JS引擎內(nèi)部應(yīng)該是用的快速排序吧。 最終測試的結(jié)果是此方法運(yùn)行時間平均是第二種方法的三倍左右,不過比第一種和第三種方法快了不少。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
js數(shù)組去重的四種實(shí)用方法_javascript技巧
js數(shù)組去重的四種實(shí)用方法_javascript技巧:面試前端必須準(zhǔn)備的一個問題:怎樣去掉Javascript的Array的重復(fù)項。據(jù)我所知,百度、騰訊、盛大等都在面試?yán)锍鲞^這個題目。這個問題看起來簡單,但是其實(shí)暗藏殺機(jī)。 考的不僅僅是實(shí)現(xiàn)這個功能,更能看出你對計算機(jī)程序執(zhí)行的深入理解。 我總共想出了三種算法