陣列去重方法

2021-08-28 11:54:06 字數 1979 閱讀 6589

雙迴圈去重

雙重 for (或 while)迴圈是比較笨拙的方法,它的實現原理很簡單:先定義乙個包含原始陣列第乙個元素的陣列,然後遍歷原始陣列,將原始陣列中的每個元素與新陣列的每個元素進行比較,如果不重複則新增到新的陣列中,最後返回新的陣列,其缺點是如果陣列長度很長,那麼將會非常消耗記憶體

function

unique

(arr)

let res =

[arr[0]

]for

(let i =

1; i < arr.length; i++)}

if(flag)

}return res

}

indexof 方法去重(1)

陣列的 indexof() 方法可以返回某個指定的元素在陣列中首次出現的位置。該方法首先定義乙個空陣列 res ,然後呼叫 indexof() 方法對原來的陣列進行遍歷判斷,如果元素不在 res 中,則將其 push 進 res 中,最後將 res 返回即可獲得去重的陣列

function

unique

(arr)

let res =

for(

let i =

0; i < arr.length; i++)}

return res

}

indexof 方法去重(2)

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

function

unique

(arr)

return array.prototype.filter.

call

(arr,

function

(item, index));

}

相鄰元素去重

這種方法首先呼叫了陣列排序的方法 sort() ,然後根據排序後的結果進行遍歷及相鄰元素對比,如果相等則跳過該元素,直到遍歷結束

function

unique

(arr)

arr = arr.

sort()

let res =

for(

let i =

0; i < arr.length; i++)}

return res

}

利用物件屬性去重

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

function

unique

(arr)

let res =

, obj =

for(

let i =

0; i < arr.length; i++

)else

}return res

}

set 與解構賦值

es6 中新增了資料型別 set ,set 的乙個最大的特點就是資料不重複。set 函式可以接受乙個陣列(或類陣列物件)作為引數來初始化,利用該特性也能做到陣列去重

function

unique

(arr)

return

[...

newset

(arr)

]}

array.from 與 set 去重

array.from 方法可以將 set 結構轉換為陣列結果,而我們知道 set 結果是不重複的資料集,因此能夠達到去重的目的

function

unique

(arr)

return array.

from

(new

set(arr)

)}

陣列去重方法

1 es6提供了新的資料結構set,它類似於陣列,但是成員的值是唯一的,沒有重複的值。let arr 1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,asd 123 123 123 asd 1,true,true,false console.log new set arr 或...

陣列去重方法

1.使用原生的filter和indexof來進行過濾和篩選。var filtered data.filter function item,index 複製 使用filter的第三個引數繫結this的值 var filtered2 data.filter function item,index,sel...

陣列去重方法

第一種方法用set內的值不可重複的屬性 const array 1 4,6 4,64 4,478 function uniqueuseset arr 物件是一種以鍵值對儲存資訊的結構,並且不能有重複的鍵 function uniqueobject arr len arr.length for let...