雙迴圈去重
雙重 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...