數(shù)組去重的方法有很多種,下面給大家?guī)讉€使用es6去重的方法
1.數(shù)組去除重復(fù)基本類型
利用 Set 和 Array.from 兩個es6的語法可以快速完成基本類型的數(shù)組去重
Set 是一種新的數(shù)據(jù)結(jié)構(gòu),它可以接收一個數(shù)組或者是類數(shù)組對象,自動去重其中的重復(fù)項目,使用方式如下
new Set(arr)
不過需要注意的是,利用 Set 去重返回的是一個 Json 對象,并非數(shù)組,這時候我們可以使用 Array.from
Array.from 可以把類數(shù)組對象、可迭代對象轉(zhuǎn)化為數(shù)組,封裝成函數(shù)如下
function distinct(arr){
return Array.from(new Set(arr))
}
2.數(shù)組去除引用類型
如果是需要去重引用類型的話, 則可以使用 reduce
reduce方法對數(shù)組中的每個元素執(zhí)行一個由您提供的reducer函數(shù)(升序執(zhí)行),將其結(jié)果匯總為單個返回值reducer 函數(shù)接收4個參數(shù):
- Accumulator (acc) (累計器)
- Current Value (cur) (當(dāng)前值)
- Current Index (idx) (當(dāng)前索引)
- Source Array (src) (源數(shù)組)
您的 reducer 函數(shù)的返回值分配給累計器,該返回值在數(shù)組的每個迭代中被記住,并最后成為最終的單個結(jié)果值。
實例如下:
function distinct(arr){
var result = []
var obj = {}
arr.reduce((item,next)=>{
// 這里判斷的是數(shù)組引用類型中的ID, 各位可自行替換判斷依據(jù)
obj[next.id]?'':obj[next.id]=true&&result.push(next)
})
return result
}
以上就是數(shù)組去重的幾個小技巧了,get起來吧。