第一次寫技術部落格,之前總是認為寫這些會很浪費時間,還不如多看幾篇技術博文。但。。。但昨天不知道受了什麼刺激,好像有什麼在驅使著自己要寫一樣,所以才有了今天的第一篇博文。總覺得應該要堅持這樣寫下去。初次寫,並不知道寫些什麼,就慢慢地整理些以往的總結吧!
文中如果有**寫得不準確或者有任何建議的,歡迎毫不吝嗇地指出!
方法一:原理:利用indexof()遍歷陣列,如果臨時陣列找不到該元素,則push到臨時陣列,否則不做處理
functionuniqarr1(arr)
}return
res;
}}
方法二:原理:同樣利用indexof()遍歷陣列,如果元素首次出現位置和它的索引相等,則說明不是重複元素,push到臨時陣列,否則不做處理
functionuniqarr2(arr)
} return
res;
}
方法三:原理:利用物件鍵值唯一性,如果物件沒有該屬性,則新增該屬性,同時將該元素push到臨時陣列
functionuniqarr3(arr) ,
res =;
for (var i = 1,len = arr.length; i < len; i++)
} return
res;
}
方法四:原理:同樣利用物件鍵值唯一性,唯一不同的地方是這裡不再使用臨時陣列變數,而是利用object.keys()方法將去重後的結果返回
注意:這裡的返回結果跟上述幾種不太一致,原因是這裡是物件的key,每一項都是字串的形式,同時返回的結果陣列元素的順序是不確定的
functionuniqarr4(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中的都是不重複的。
注意:這裡返回的結果陣列同樣順序是有變化的(方法四順序也有變化)
functionuniqarr5(arr)
} return
res;
}
方法六:原理:巢狀迴圈,如果相等,則截掉後面的,這裡要注意splice會影響到原陣列,所以這裡重新計算了len值和j值。
functionuniqarr6(arr)
}}
return
arr;
}
方法七:原理:es6新的資料結構set,類似陣列,但成員的值都是唯一的,所以利用這個特性可以做到陣列去重
functionuniqarr7(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...