数组去重几种方法

一,
      var arr=[1,3,1,2,3,5,2,3,4,6];
      var arr1=[];                                     添加一个新数组
      for(var i=0;i<arr.length;i++){           遍历数组arr,
          if(arr1.indexOf(arr[i])===-1){       在数组arr1中查找arr[i]元素,如果没找到(返回-1)
              arr1.push(arr[i]);}                    则在数组arr1数组尾部添加一个新元素arr[i]  
       }
       console.log(arr1);
  第一种方法使用indexOf查找新数组中是否有有原数组中元素,没有则在新数组arr1中添加该元素,有则不添加。,
 
      var arr=[1,3,1,2,3,5,2,3,4,6];
      for(var i=0;i<arr.length;i++){           遍历数组arr,
       var item=arr[i];                               item就是数组arr中每一个元素
       for(var j=i+1;j<arr.length;j++){        从item的下一位遍历数组arr,
                if(item===arr[j]){                    如果item以后发现和item相同元素,
                    arr.splice(j,1);                   则删除相同元素
                    j--;                                     删除元素后,后面元素会把删除元素位置补出来,循环j++会把补位元素跳过进行下一位开始判断,所有需要J--;                
                }
            }
        }
        console.log(arr);
第二种方法使用splice遍历两次原数组,在第一次遍历原数组元素的基础上检查后面元素是否有和该元素相同的元素,有则删除,没有则继续,由于该方法是在原数组上删除元素,会改变数组长度,不推荐使用。
 
        var arr=[1,3,1,2,3,5,2,3,4,6];
        var arr1=[];                                   添加一个新数组
        for(var i=0;i<arr.length;i++){          遍历数组arr,
            var item=arr[i];                          item就是数组arr中每一个元素
            var bool=true;                           设置bool为ture
            for(var j=0;j<arr1.length;j++){     遍历数组arr,
                if(arr1[j]===item){                  如果arr1数组中存在和item相同元素,
                    bool=false;                        则bool=false
                    break;                              跳出后面循环,返回i++继续
                }
            }
            if(bool){                                  如果bool=true;
                arr1.push(item);                则在数组arr1尾部添加一个元素item 
            }
        }
第三种方法是在新创建一个新数组,在原数组中查找新数组中是否有和原数组相同元素,有则跳出继续循环,没有则在新数组中添加该元素。
posted @ 2020-03-29 22:07  默_守护  阅读(276)  评论(0)    收藏  举报