每日分享!~ JavaScript陣列去重
陣列去重
陣列去重在很多面試的過程中,都是大題出現!網路上出現了很多陣列去重的方式。多數的達到了12種以上。
今天我只給大家介紹兩種我比較喜歡,比較認可!入手簡單的~能解決自己的問題就可以了
好了 ,不多bb,直接上程式碼:
方式1: indexOf
<script> // 業務要求 /** 陣列的去重 **/ // 方式1 使用indexof方式 function ClearArray(arr){ // 建立一個新的陣列來存放去重之後的陣列 var newArr = [] // 將傳入陣列進行迴圈遍歷處理 arr.forEach(item => { // 使用indexof 判斷newArr中陣列是否存在,不存在的話直接push進去 if ( newArr.indexOf(item) === (-1)) { newArr.push(item) } }) return newArr } // 測試陣列 var arr = [1,3,4,5,6,4,33,3,3,,4,3] console.log(ClearArray(arr)) //結果 [1, 3, 4, 5, 6, 33] </script>
注意:這個判斷是對於定義新陣列去判斷,不是對需要判斷對陣列。
總結,利用indexOf方法判斷新陣列中是否存在該元素,不存在的話,push 到新陣列中去,如果push過,在次判斷的時候,就會顯示存在,這樣就會直接跳過。
----------------------------------------黃金分割線---------------------------------------------------------------
方式2 splice()
直接上程式碼:
function ClearArray(arr){ // 首先迴圈遍歷該陣列 for(var i = 0; i<arr.length; i++){ for(var j=i+1; j<arr.length; j++){ //用第一個元素跟其他元素進行對比 if (arr[i] === arr[j]){ // 如果該元素跟本身元素相同,那麼去掉該元素 arr.splice(j,1) j-- } } } // return 該元素 return arr } var arr = [1,3,4,5,6,4,33,3,3,,4,3] console.log(ClearArray(arr)) // 結果 [1, 3, 4, 5, 6, 33, empty]
注意, 這個方式是通過二次迴圈來判斷,一個元素同其他元素對比。如果與該元素相同的話,則需要通過splice方法,去掉該元素。
-----------------------------分割線------------------------------------------
總結以上兩種方法的差異:
相信大家通過結果。關注了兩個方式的結果不一致,第一個結果去重:將空元素都去掉了。第二個方式沒有,而是顯示的empty 。
如果該元素不需要空元素的話,建議使用第一種方式。如果需要的話, 建議使用第二種方式。