js 陣列去重

2021-08-11 15:04:03 字數 1479 閱讀 4213

方法1:        

[js]

view plain

copy

array.prototype.method1 = 

function

()  

}  return

arr;  

}  

方法2:

[js]

view plain

copy

array.prototype.method2 = function

();    

//定義乙個hash表

vararr;  

//定義乙個臨時陣列

for(

vari = 0; i < 

this

.length; i++)  

}  return

arr;  

}  改進點:

不同的鍵可能會被誤認為一樣;例如: a[1]、a["1"] ,還需要對型別進行判斷

function

unique(array), r = , len = array.length,

val,

type;

for(var i =

0; i < array.length; i++)

else

if(n[

val].indexof(

type) < 0)

}

return

r;

}

方法3:

[js]

view plain

copy

array.prototype.method3 = 

function

()  

}  return

arr;  

}  

方法4:

[js]

view plain

copy

array.prototype.method4 = 

function

()              

}  return

arr;  

}  

例如:[js]

view plain

copy

vararr = [112,112,34,

'你好'

,112,112,34,

'你好'

,'str'

,'str1'

];  

alert(arr.method3());  

方法1和方法3都用到了陣列的indexof()方法,此方法主要用來查詢元素在陣列中第一次出現的位置。比較浪費資源和時間。

方法2使用的是hash表,把已經出現過的元素通過下標形式寫入到乙個object內,下標的引用要比用陣列indexof()方法搜尋節省時間。

方法4是先將陣列排序,然後一次比較相鄰的兩個元素的值,排序使用的是js原生的sort()方法。

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...