数组去重的一些方法和思路 总有一个你会的!!! 不全之处敬请见谅

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="utf-8">
  5         <title>数组去重</title>
  6     </head>
  7     <body>
  8     </body>
  9     <script type="text/javascript">
 10         var arr = [1,8,8,2,2,3,4,5,5,6,6,6,7]
 11         
 12         
 13         //方法一  简单粗暴
 14         // var arr = new Set(arr);
 15         // console.log(arr)  //==>[1,2,3,4,5,6,7]
 16         
 17         
 18         /****************************************************************/
 19         //方法二 先转对象只拿key
 20         // var obj = {};
 21         // for(var i = 0 ;i<arr.length;i++){
 22         //     if(!obj[arr[i]]){
 23         //         obj[arr[i]] = 1
 24         //     }else{
 25         //         obj[arr[i]] ++
 26         //     }
 27         // }
 28         // console.log(obj)
 29         
 30         //只拿key   一
 31         // var arr2 = Object.keys(obj)
 32         // console.log(arr2)
 33         
 34         //只拿key   二
 35         // var arr2 = [];
 36         // for(var attr in obj){
 37         //     arr2.push(attr)
 38         // }
 39         // console.log(arr2)
 40         
 41         
 42         /********************************************************************************/
 43         
 44         
 45         //方法三 
 46         // var arr1=[];
 47         // for(var i=0;i<arr.length;i++){
 48         //     //得到arr中的每一个元素,在arr1中根据元素找索引,找不到,就把arr[i]推进arr1里
 49         //     if(arr1.indexOf(arr[i])===-1){
 50         //         arr1.push(arr[i]);
 51         //     }
 52         // }
 53         // console.log(arr1)        ////==>[1,2,3,4,5,6,7]
 54         
 55         
 56         
 57         /*************************************************************************/
 58         
 59         //方法四  转字符串转数组
 60         // var str = arr.toString();
 61         // var str1 = "";
 62         // for(var i =0;i<str.length;i++){
 63         //     if(str1.indexOf(str[i])==-1 && str[i] !== ","){
 64         //         str1 += str[i]+","
 65         //     }
 66         // }
 67         // str1 = str1.slice(0,str1.length-1)
 68         // console.log(str1.split(','))
 69         
 70         /**************************************************************************/
 71         
 72         
 73         //方法四  双层循环,外循环表示从0到arr.length,内循环表示从i+1到arr.length,将没重复的右边值放入新数组。
 74         //(检测到有重复值时终止当前循环同时进入外层循环的下一轮判断)
 75         // function unique(arr){
 76         //     var newArr = [];
 77         //     for(var i = 0;i<arr.length;i++){
 78         //         for(var j=i+1;j<arr.length;j++){
 79         //             if(arr[i] == arr[j]){
 80         //                 ++i
 81         //             }
 82         //         }
 83         //         newArr.push(arr[i])
 84         //     }
 85         //     return newArr
 86         // }
 87         // console.log(unique(arr))
 88         
 89         /*****************************************************************************************/
 90         //方法五            给传入数组排序,排序后相同值相邻, 然后遍历时,
 91         // 新数组只加入不与前一值重复的值。会打乱原来数组的顺序
 92 
 93         // function unique(arr){
 94         //     arr.sort();
 95         //     var newArr = [arr[0]];
 96         //     for(var i =1;i<arr.length;i++){
 97         //         if(arr[i] !== newArr[newArr.length-1]){
 98         //             newArr.push(arr[i])
 99         //         }
100         //     }
101         //     return newArr
102         // }
103         // console.log(unique(arr))
104         
105     </script>
106 </html>

 

posted @ 2020-09-02 13:55  陈小浩  阅读(165)  评论(0编辑  收藏  举报