JavaScript數組去重的四種方法
javascript數組去重方法彙總
ue1 = function () { var n = []; //一個新的臨時數組 for (var i = 0; i < th; i++) //遍歷當前數組 { //如果當前數組的第i已經保存進了臨時數組,那麼跳過, //否則把當前項push到臨時數組裏面 if (xOf(this[i]) == -1) (this[i]); } return n;};ue2 = function(){ var n = {},r=[]; //n爲hash表,r爲臨時數組 for(var i = 0; i < th; i++) //遍歷當前數組 { if (!n[this[i]]) //如果hash表中沒有當前項 { n[this[i]] = true; //存入hash表 (this[i]); //把當前數組的當前項push到臨時數組裏面 } } return r;};ue3 = function(){ var n = [this[0]]; //結果數組 for(var i = 1; i < th; i++) //從第二項開始遍歷 { //如果當前數組的第i項在當前數組中第一次出現的位置不是i, //那麼表示第i項是重複的,忽略掉。否則存入結果數組 if (xOf(this[i]) == i) (this[i]); } return n;};ue4 = function(){ (); var re=[this[0]]; for(var i = 1; i < th; i++) { if( this[i] !== re[th-1]) { (this[i]); } } return re;};var arr = [1,2,2,2,3,3,4,5];(ue1()); // [1, 2, 3, 4, 5](ue2()); // [1, 2, 3, 4, 5](ue3()); // [1, 2, 3, 4, 5](ue4()); // [1, 2, 3, 4, 5]
其中第1種和第3種方法都用到了數組的indexOf方法。此方法的目的是尋找存入參數在數組中第一次出現的位置。很顯然,js引擎在實現這個方法的時候會遍歷數組直到找到目標爲止。所以此函數會浪費掉很多時間。 而第2中方法用的是hash表。把已經出現過的通過下標的'形式存入一個object內。下標的引用要比用indexOf搜索數組快的多。
第四種方法的思路是先把數組排序,然後比較相鄰的兩個值。 排序的時候用的JS原生的sort方法,JS引擎內部應該是用的快速排序吧。 最終測試的結果是此方法運行時間平均是第二種方法的三倍左右,不過比第一種和第三種方法快了不少。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
相關文章
-
JavaScript清空數組的方法
過這四年的求學生涯使我懂得了很多,從那天真幼稚的我,經過那人生的挫折和坎坷,到現在成熟、穩重的我。使我明白了一個道理,人生不可能存在一帆風順的事,只有自己勇敢地面對人生中的每一個驛站。接下來,小編在這給大家帶來20 -
Javascript時間格式format函數的兩種使用方法
Javascript日期格式化在日常開發中還是挺常見的,那麼下面就給大家分享Javascript時間格式format函數的兩種使用方法示例,一起來看看。 方法一e=function(fmt) { var o = { "M+" : onth()+1, //月份 "d+" : ate(), // -
在JavaScript中操作數組之map()方法的使用示例
JavaScript 數組map()方法創建一個新的數組使用調用此數組中的每個元素上所提供的.函數的結果。語法(callback[, thisObject]);下面是參數的詳細信息:callback : 從當前的元素函數產生新的數組的元素。 thisObject : -
JavaScript數組常用方法介紹
在JavaScript開發過程中,常用的數組方法有哪些?下面YJBYS小編爲你一一介紹! 修改數組 - 刪除數組最後一位元素。var arr = [1, 2, 3];();// 返回 3arr;// [1,2]t - 刪除數組第一位元素。var arr = [1, 2, 3];t();// -
javascript創建數組之聯合數組的使用方法
複製代碼 代碼如下://js中的.數組可以以鍵值對的方式存在var arr = new Array();arr["A"] = "boss";arr["B"] = "Emp";for (var m in arr) {e(arr[m] + " ");}var person = new Object();person["name"] = "xiaoli";p -
JavaScript數組的棧方法與隊列方法
數組(Array)和對象(Object)應該是JavaScript中使用最多也是最頻繁的兩種類型了,Array提供了很多常用的方法:棧方法、隊列方法、重排序方法、操作方法、位置方法、迭代方法等等。1、Array的棧方法棧是一種LIFO(Last-In-First- -
JavaScript數組的定義及數字操作方法
一、數組的介紹數組中的元素類型可以是數字型、字符串型、布爾型等,甚至也可以是一個數組。 二、定義數組1、通過數組的構造函數來定義數組:var arr=new Array();var arr=new Array(size);var arr=new Array(ele -
javascript中各種函數的使用方法
e();Array和String對象都有在Array中 slice(i,[j])i爲開始截取的索引值,負數代表從末尾算起的索引值,-1爲倒數第一個元素j爲結束的索引值,缺省時則獲取從i到末尾的所有元素參數返回:返回索引值從i到j的數組,原數組不改變在St -
Javascript數組與字典用法分析方法
本文實例分析了Javascript數組與字典用法。分享給大家供大家參考。具體分析如下:Javascript 的數組Array,既是一個數組,也是一個字典(Dictionary).先舉例看看數組的用法。複製代碼 代碼如下:var a = new Array();a[0] = -
Javascript基礎教程之數組array
字符串,數值,布爾值都屬於離散值(scalar),如果某個變量是離散的,那麼任何時候它只有一個值。如果想使用變量存儲一組值,就需要使用數組(array)。數組是由多個名稱相同的樹值構成的集合,集合中每個數組都是數組的元素(element