javascript陣列唯一化實現方式

2021-08-24 22:34:47 字數 824 閱讀 8618

這裡給出2中實現方式。一種是大家應該都知道的indexof檢測的方式,另一種是結合lastindexof和splice實現方式。

//首先給array物件原型上新增indexof和lastindexof方法.(如果沒有的話) if(!array.prototype.indexof)else for(var current;index= length) index = length - 1; } for(var current;index>=0;index--) return -1; } } //很常見的實現方式 var arrayunique1 = function(arr) } return arr; }

測試資料:var arr = [1,2,3,1,2,3,2,1,3,4,2,232];

ie7迴圈10,000次:

arrayunique1為460ms,arrayunique2為190ms。

ff3.5迴圈100,000次:

arrayunique1為170ms,arrayunique2為63ms。

從測試結果上可以看出,通過lastindexof和splice的方式的速度是普通方式的2-3倍。

除了上面描述的2中實現方式外,其實還是有其他實現方式的。jquery中就一種實現方式。我們可以看下具體的**:

unique: function( array ) ; try } } catch( e ) return ret; }

這種是通過建立乙個臨時的物件,然後獲取元素的id儲存在物件的key中。但這種實現方式只能針對物件,對於普通的直接量(如:數字,字串等)是無用的。並且經過測試,這種方式在執行速度上和lastindexof結合splice還是有點差距的。

唯一化演算法

源 git位址 對於無序列表的唯一化演算法 從前往後依次處理節點p,在p的前驅中查詢 通過find函式 值相同者,則呼叫remove函式將相同者刪除 template 刪除重複元素,返回刪除元素個數 int list deduplicate num 下乙個位置查詢 return oldsize rm...

JavaScript陣列整理(一)

var a 1,2,3,4 建立陣列直接量 var b new array 1,2,3,4 呼叫建構函式建立 var c new arrary 10 只有乙個引數的時候表示建立指定長度的陣列 如果省略陣列直接量中的某個值,就會被賦值為undefined var a 1,3 建立的陣列為 1,unde...

《JavaScript框架設計》 1 3 陣列化

瀏覽器下存在許多類陣列物件,如function內的arguments,通過document.forms form.elements doucment.links select.options document.getelementsbyname document.getelementsby tagn...