JS基于對象的特性實現(xiàn)去除數(shù)組中重復項功能詳解
本文實例講述了JS基于對象的特性實現(xiàn)去除數(shù)組中重復項功能。分享給大家供大家參考,具體如下:
數(shù)組去重的方法有很多,不同的方法的效率也不相同。如前面文章JS實現(xiàn)的數(shù)組去除重復數(shù)據(jù)算法小結中就總結分析了4種實現(xiàn)方法。這里介紹一種高效數(shù)組去重的方法:根據(jù)JS對象的特性去除數(shù)組中重復項的方法。
一、JS對象的特性(本文中所使用的特性):key始終唯一
引例:說明對象key值的唯一性,即當重新給js已有屬性賦值的時候,實際上是覆蓋了key,而不是新建了key
var t={name:'張三',age:20};//定義個js對象 console.log(t.name);//控制臺輸出:張三 //注意:此時對象t有兩個屬性:name、age t.name='李四'; console.log(t.name);//控制臺輸出:李四 //注意:此時對象t依然有兩個屬性:name、age
二、數(shù)組去重步驟解析
分為兩個步驟:
1. 把要去重的數(shù)組轉(zhuǎn)換成一個js的對象并返回。轉(zhuǎn)換規(guī)則:把數(shù)組中的值變成js對象當中的key,然后value給任意值;
2. 把步驟1中的對象再還原成數(shù)組,對象的key作為數(shù)組中的元素。
三、數(shù)組去重實現(xiàn)
var arr=[1,2,3,4,5,23,4,2,4,3]; //1.把數(shù)組裝換成對象,數(shù)組的元素作為對象的key,然后返回對象 function toObject(ac_array){ var obj={};//私有的對象 for (var i=0;i<ac_array.length;i++) { obj[ac_array[i]] = true; } console.log(obj);//Object {1: true, 2: true, 3: true, 4: true, 5: true, 23: true} return obj; } //2.把對象的key獲取出來作為數(shù)組的元素,然后返回數(shù)組 function keys(ac_obj){ var arr = []; for(var item in ac_obj){ if(ac_obj.hasOwnProperty(item)){ arr.push(item); } } console.log(arr);//["1", "2", "3", "4", "5", "23"] return arr; } //綜合 function uniq(ac_array){ return keys(toObject(ac_array)); } //測試 var uniq_array=uniq(arr); console.log(uniq_array);//["1", "2", "3", "4", "5", "23"]
代碼測試結果:
這種利用js對象key唯一性的特性進行數(shù)組去重的方法,在雅虎YUI框架的底層代碼中也有用到哦,有興趣的小火把可以去瞄瞄哦。
PS:這里再為大家提供幾款去重復工具供大家參考使用:
在線去除重復項工具:
http://tools.jb51.net/code/quchong
在線文本去重復工具:
http://tools.jb51.net/aideddesign/txt_quchong
更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript數(shù)學運算用法總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調(diào)試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
利用 Chrome Dev Tools 進行頁面性能分析的步驟說明(前端性能優(yōu)化)
這篇文章主要介紹了利用 Chrome Dev Tools 進行頁面性能分析的步驟說明(前端性能優(yōu)化),本文給大家介紹的非常想詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02JS實現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法
這篇文章主要介紹了JS實現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法,結合實例形式分析了javascript通過針對單擊onclick事件增加定時器進行onClick事件與onDblClick事件的區(qū)別判定操作,需要的朋友可以參考下2018-06-06Javascript實現(xiàn)可旋轉(zhuǎn)的圓圈實例代碼
這篇文章主要介紹了Javascript實現(xiàn)可旋轉(zhuǎn)的圓圈實例代碼,可實現(xiàn)圓圈的旋轉(zhuǎn)與運動效果,涉及javascript動態(tài)操作頁面元素屬性及進行相應數(shù)學運算的技巧,需要的朋友可以參考下2015-08-08使用JavaScript檢測Firefox瀏覽器是否啟用了Firebug的代碼
在啟用Firebug的情況下訪問GMail會收到一個 Firebug會讓Gmail變慢 的警告,這是如何檢測的呢?這里就說說。2010-12-12