1、for回圈遍歷去重
1 <script> 2 // 重復的元素只保留一個 3 var arr = [4,2,5,7,2,6,2,6,6,5] 4 console.log(arr) 5 // 使用回圈依次比較,遇到重復的就洗掉 6 // 比較length-1趟 7 for (var i = 0; i < arr.length - 1; i++) { 8 // 當前這一趟比較從i+1開始 9 // 比較的終點length-1 10 for (var j = i+1; j < arr.length; j++) { 11 if (arr[i] === arr[j]) { 12 arr.splice(j, 1) 13 // 刪完以后j-1抵消for里的++確保不跳過重復的值 14 j-- 15 } 16 } 17 } 18 console.log(arr) 19 </script>
2,、forEach遍歷去重
1 <script> 2 var arr = [4,2,4,5,7,2,6,2,6,6,5] 3 // 利用物件的屬性名不沖突完成去重 4 // 可以把數字作為物件的屬性名 5 // var obj = { 6 // 4: 'lisi' 7 // } 8 // console.log(obj[4]) 9 10 // 遍歷陣列,判斷當前陣列元素作為物件屬性名是否能取到值 11 // 如果取不到,說明這是第一次遍歷到當前值,就把當前元素作為物件屬性名賦個值 12 // 如果取到了,說明之前已經賦過值了,也就是說當前值不是第一次出現 13 14 var obj = {} 15 var arr1 = [] 16 arr.forEach(function (item) { 17 // 把item作為屬性名到物件里去取值看能不能取到 18 if (obj[item]) { 19 // 取到值了,說明item不是第一次出現,item是一個無效值,就不用push到arr1里,這里就什么都不用做 20 } else { 21 // 取不到值,說明item是第一次出現 22 // 就給他賦個值 23 // item是第一次出現,他是我們要保留的值 24 obj[item] = true 25 arr1.push(item) 26 } 27 }) 28 29 // arr.forEach(function (item) { 30 // // 把item作為屬性名到物件里去取值看能不能取到 31 // if (!obj[item]) { 32 // // 取不到值,說明item是第一次出現 33 // // 就給他賦個值 34 // obj[item] = 'a' 35 // arr1.push(item) 36 37 // } 38 // // else 就不用寫了 39 // // else { 40 // // // 取到值了,說明item不是第一次出現 41 // // } 42 // }) 43 44 console.log(arr1) 45 </script>
3、Set 強制去重
1 <script> 2 var arr = [4,2,4,5,7,2,6,2,6,6,5] 3 4 // ES6的寫法,把陣列寫成Set,Set是Es6新增的資料型別,默認不允許重復的 5 // 但是把陣列變成Set了,再使用Array.from重新轉換成陣列,就可以了 6 7 var arr1 = Array.from(new Set(arr)) 8 console.log(arr1) 9 </script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/124743.html
標籤:JavaScript
