JavaScript數(shù)組去重算法實例小結
本文實例總結了JavaScript數(shù)組去重算法。分享給大家供大家參考,具體如下:
測試用例:
arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name":"li","age":20},2,4,3,{"name":"li","age":20},""];
方法一:借助于臨時數(shù)組與indexOf , 算法復雜度為:O(n^2)
function unique1(arr){ var temp = []; for(var i=0; i<arr.length; i++){ if(temp.indexOf(arr[i]) == -1){ temp.push(arr[i]); } } return temp; }
測試結果:
unique1(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, Object { name="li", age=20}, ""]
bug 無法區(qū)分對象
方法二 : 用JavaScript中的Object對象來當作哈希表
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ if(!hash[arr[i]]){ hash[arr[i]]=true; temp.push(arr[i]); } } return temp; }
測試結果:
unique2(arr) : ["1", 3, 4, 5, "2", Object { name="li", age=20}, ""]
bug : 無法區(qū)分: 1 和 "1"
修改
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ var item = arr[i]; var key = typeof(item)+item; if(!hash[key]){ hash[key]=true; temp.push(arr[i]); } } return temp; }
測試結果:
unique2(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, ""]
方法三:先用sort對數(shù)組排序,然后借助臨時數(shù)組,存儲相同元素的最后一個,該方法只能用于純Number類型數(shù)組
function unique3(arr){ arr.sort(function(a,b){ return a-b; }); var temp = []; for(var i=0;i<arr.length;i++){ if(arr[i] !== arr[i+1]){ temp.push(arr[i]); } } return temp; }
PS:這里再為大家提供幾款相關工具供大家參考使用:
在線去除重復項工具:
http://tools.jb51.net/code/quchong
在線文本去重復工具:
http://tools.jb51.net/aideddesign/txt_quchong
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數(shù)組操作技巧總結》、《JavaScript字符與字符串操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript排序算法總結》、《JavaScript查找算法技巧總結》、《JavaScript數(shù)學運算用法總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
javascript實例--教你實現(xiàn)撲克牌洗牌功能
我們一般都會按照順序把隨機摸過來的牌從小到大的順序在手上理整齊(記得小時候打牌兩副牌手都抓不過來),這篇隨筆就是想通過實現(xiàn)這個功能來熟悉下js中排序數(shù)組等相關知識。2014-05-05完美解決mui框架off-canvas側滑超出部分隱藏無法滾動的問題
下面小編就為大家分享一篇完美解決mui框架off-canvas側滑超出部分隱藏無法滾動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01