js 陣列去重 7種

2022-07-14 14:45:18 字數 1612 閱讀 2522

第一次寫技術部落格,之前總是認為寫這些會很浪費時間,還不如多看幾篇技術博文。但。。。但昨天不知道受了什麼刺激,好像有什麼在驅使著自己要寫一樣,所以才有了今天的第一篇博文。總覺得應該要堅持這樣寫下去。初次寫,並不知道寫些什麼,就慢慢地整理些以往的總結吧!

文中如果有**寫得不準確或者有任何建議的,歡迎毫不吝嗇地指出!

方法一:原理:利用indexof()遍歷陣列,如果臨時陣列找不到該元素,則push到臨時陣列,否則不做處理

function

uniqarr1(arr)

}return

res;

}}

方法二:原理:同樣利用indexof()遍歷陣列,如果元素首次出現位置和它的索引相等,則說明不是重複元素,push到臨時陣列,否則不做處理

function

uniqarr2(arr)

}  return

res;

}

方法三:原理:利用物件鍵值唯一性,如果物件沒有該屬性,則新增該屬性,同時將該元素push到臨時陣列

function

uniqarr3(arr) ,

res =;

for (var i = 1,len = arr.length; i < len; i++)

}  return

res;

}

方法四:原理:同樣利用物件鍵值唯一性,唯一不同的地方是這裡不再使用臨時陣列變數,而是利用object.keys()方法將去重後的結果返回

注意:這裡的返回結果跟上述幾種不太一致,原因是這裡是物件的key,每一項都是字串的形式,同時返回的結果陣列元素的順序是不確定的

function

uniqarr4(arr) ;

for (var i = 1,len = arr.length; i < len; i++)

}  return

object.keys(obj);

}

方法五:原理:先對原陣列進行排序,臨時陣列先儲存第乙個元素,然後從第二個元素開始迴圈判斷排序後的原陣列(arr)是否與臨時陣列(res)的第length-1個元素(即res的最後乙個元素,也即res每次新新增的元素)是否相等,若不相等,則push到res,這樣就確保了每次push到res中的都是不重複的。

注意:這裡返回的結果陣列同樣順序是有變化的(方法四順序也有變化)

function

uniqarr5(arr)

}  return

res;

}

方法六:原理:巢狀迴圈,如果相等,則截掉後面的,這裡要注意splice會影響到原陣列,所以這裡重新計算了len值和j值。

function

uniqarr6(arr)

}}  

return

arr;

}

方法七:原理:es6新的資料結構set,類似陣列,但成員的值都是唯一的,所以利用這個特性可以做到陣列去重

function

uniqarr7(arr)

暫且先分析了幾種去重方法的實現原理,關於上述幾種去重方法的效能分析後面將進行補充。。。 

Js陣列去重方法10種

方法一 var arr 1,23,1,1,1,3,23,5,6,7,9,9,8,5 function removeduplicateditem arr return arr arr2 removeduplicateditem arr console.log arr console.log arr2 ...

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...