對于H5前端開發(fā)來說,數(shù)組去重是個(gè)很常見的問題,下面介紹幾種數(shù)組去重的方式
1、遍歷數(shù)組的所有元素,然后讓它與其后所有的數(shù)組元素進(jìn)行比較,如果相等則刪除重復(fù)的元素,并重新與被刪除元素所在索引的元素接著進(jìn)行比較 例如:
j–;是很必須的一步,數(shù)組的splice方法是會改變原數(shù)組的,當(dāng)重復(fù)元素被刪掉之后,下一個(gè)位置上的元素會填充到當(dāng)前索引位置,此時(shí)索引為j 的 位置上是一個(gè)未經(jīng)比較的新值,所以需要通過j – – 防止j++之后跳過與當(dāng)前索引位置上的比較。
2、將數(shù)組排序之后相鄰的兩個(gè)元素兩兩比較,如果后一個(gè)元素與前面的元素相等則刪除后邊的元素,并讓前一個(gè)元素與其后的元素重新比較。
此處 i–原理與方法一相同,為了保證當(dāng)查出重復(fù)元素時(shí),要讓當(dāng)前元素與其后填充來的元素再次比較。
3、創(chuàng)建一個(gè)新數(shù)組,然后遍歷要去重?cái)?shù)組的所有元素并依次向新數(shù)組添加,如果要添加的元素在新數(shù)組當(dāng)中不存在則將其push進(jìn)去,如果已存在則跳過本次遍歷,進(jìn)行下一次遍歷。
此方法還可以用另外一種條件判斷是否向新數(shù)組中push,不是判斷是否存在于新數(shù)組,改為判斷當(dāng)前元素的索引與當(dāng)前元素第一次出現(xiàn)的索引是否相等,如果相等則說明是第一次出現(xiàn),就將其push新數(shù)組,如果不相等則說明不是第一出現(xiàn),不需要做push操作。
4、利用對象的思想如果對象里沒有這個(gè)屬性的話就會返回undefined,創(chuàng)建一個(gè)空對象和空數(shù)組,遍歷要去沖的數(shù)組的元素,判斷對象中以數(shù)組元素為屬性名時(shí)是否為undefined,如果是則給它設(shè)置一個(gè)值假設(shè)為1,并將改元素push進(jìn)新數(shù)組中,如果不為undefined則不作任何操作。
以上是一些H5開發(fā)培訓(xùn)中常用的數(shù)組去重方法,希望對你有所幫助。