JS學習筆記之數組去重實現方法小結
本文實例講述了JS學習筆記之數組去重實現方法。分享給大家供大家參考,具體如下:
操作的數組
let arr=[0,1,23,'1',4,2,8,5,5,6,9,'asdasd','5']
1、
利用ES6 的set 來進行數組去重
console.time("set") let type1=new Set(arr) console.log(type1) type1=[...type1] console.log(type1) console.timeEnd("set")
2、
利用indexof和forEach 多次遍歷來搜索是否有相同的值
console.time("indexOf") let type2=[] arr.forEach(function(item,index){ if(type2.indexOf(item)<0){ type2.push(item) } }) console.log(type2) console.timeEnd("indexOf")
3、
雙循環(huán)實現數組去重
splice()
方法向/從數組中添加/刪除項目,然后返回被刪除的項目。
缺點 會對元素組造成影響,所以建議先拷貝數組
console.time("splice") let arr2=[0,1,23,'1',4,2,8,5,5,6,9,'asdasd','5'] for(let i=0;i<arr2.length;i++){ for(let j=i+1;j<arr2.length;j++){ if(arr2[i]===arr2[j]){ arr2.splice(i,1) } } } console.log(arr2) console.timeEnd("splice")
4、
利用 對象屬性 不重復的特性 以及 typeof
來實現數組去重
console.time("obj屬性") let obj1={} let type4=[] arr.forEach(function(item,index){ let tf=typeof item if(!obj1[tf+"_"+item]){ obj1[tf+"_"+item]=true } }) console.log(obj1) for(item in obj1){ type4.push(item.split("_")[0].toLowerCase()=="number"?+item.split("_")[1]:item.split("_")[1]) } obj1=null; console.log(type4) console.timeEnd("obj屬性")
5、
利用sort
排序 相同值就會被排列到一起
會對元素組產生操作
console.time("sort排序") let arr3=[0,1,23,'1',4,2,8,5,5,6,9,'asdasd','5'] arr3.sort() for(let i=0;i<arr3.length;i++){ if(arr3[i]===arr3[i+1]){ arr3.splice(i,1) } } console.log(arr3) console.timeEnd("sort排序")
效果展示
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
PS:這里再為大家提供幾款相關工具供大家參考使用:
在線去除重復項工具:
http://tools.jb51.net/code/quchong
在線文本去重復工具:
http://tools.jb51.net/aideddesign/txt_quchong
更多關于JavaScript相關內容還可查看本站專題:《JavaScript數組操作技巧總結》、《JavaScript字符與字符串操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
在IE中調用javascript打開Excel的代碼(downmoon原作)
在IE中調用javascript打開Excel的代碼(downmoon原作)...2007-04-04javascript鼠標跟隨運動3種效果(眼球效果,蘋果菜單,方向跟隨)
在很多網站上能看到圖片跟隨鼠標移動的JS特效,其實做法很簡單,本文就介紹了很多javascript鼠標跟隨運動,在這里與大家分享下。2016-10-10for循環(huán) + setTimeout 結合一些示例(前端面試題)
最近在學習node.js開發(fā)資料,正好碰到了for循環(huán)+settimeout的經典例子,下面小編給大家分享for循環(huán) + setTimeout 結合一些示例代碼,需要的朋友參考下吧2017-08-08javascript showModalDialog傳值與FireFox的window.open 父子窗口傳值示例
javascript showModalDialog傳值與FireFox的window.open 父子窗口傳值示例代碼。2009-11-11