陣列去重的方法(暫時了解的)

2022-08-31 08:18:08 字數 1015 閱讀 7369

1、利用es6中set去重

let arr=[1,1,2,3,4,4,5]

arr=[...new

set(arr)]

console.log(arr)

2、利用兩個for迴圈巢狀,然後splice去重(es5中最常用)

先定義乙個包含原始陣列第乙個元素的陣列,然後遍歷原始陣列,將原始陣列中的每個元素與新陣列中的每個元素進行比對,

如果不重複則新增到新陣列中,最後返回新陣列;因為它的時間複雜度是o(n^2),如果陣列長度很大,那麼將會非常耗費記憶體

3、利用indexof去重1 陣列內是否有該元素,有返回1,沒有返回-1陣列的indexof()方法可返回某個指定的元素在陣列中首次出現的位置。該方法首先定義乙個空陣列res,

然後呼叫indexof方法對原來的陣列進行遍歷判斷,如果元素不在res中,則將其push進res中,

最後將res返回即可獲得去重的陣列

新建乙個空的結果陣列,

for迴圈原陣列,判斷結果陣列是否存在當前元素,如果有相同的值則跳過,不相同則push進陣列。

利用indexof去重2

利用indexof檢測元素在陣列中第一次出現的位置是否和元素現在的位置相等,如果不等則說明該元素是重複元素

4、利用sort 利用sort()排序方法,然後根據排序後的結果進行遍歷及相鄰元素比對。

這種方法首先呼叫了陣列的排序方法sort(),

然後根據排序後的結果進行遍歷及相鄰元素比對,如果相等則跳過改元素,直到遍歷結束

5、利用includes 檢測陣列是否有某個值

6、利用filter 過濾器

7、利用遞迴去重

8、利用map

9、reduce+includes

10、利用物件屬性去重

建立空物件,遍歷陣列,將陣列中的值設為物件的屬性,並給該屬性賦初始值1,每出現一次,對應的屬性值增加1,

這樣,屬性值對應的就是該元素出現的次數了

11 array.from與set去重

陣列去重的方法

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

陣列去重的方法

1.第一種方法 有乙個需要去掉重複元素的陣列arr,定義乙個新陣列res,迴圈遍歷arr陣列中的每乙個元素,看res中是否存在,如果不存在,則push進去 function repeat arr repeat 1,3,5,7,9,12,15,21,34 2.利用物件屬性去重 每次迴圈取出原陣列的元素...

陣列去重的方法

陣列去重var ary 1,23,4,2,33,1,2,44,3,2,3 ary.sort function a,b 返回的是排好序的陣列 for var i 0 iif ary i ary i 1 var ary 1,23,4,2,33,1,2,44,3,2,3 var arr2 for var ...