数组去重的方法

方案一:定义新数组

  • 定义一个新数组,然后将原数组的元素与新数组一一比较,如果不同则放在新数组中。
    <script type="text/javascript">
        var arr = [1,1,3,5,6,2,6,2,2,3,4,5];

        function unique(array){
            var newArr = [];
            for(var i=0;i<array.length;i++){
                if(newArr.indexOf(array[i]) == -1){
                    newArr.push(array[i]);
                }
            }
            return newArr;
        }

        console.log(unique(arr));
    </script>

方案二:双层循环

  • 外层循环元素,内层循环比较值。
    <script type="text/javascript">
        var arr = [1,1,3,5,6,2,6,2,2,3,4,5];

        function unique(array){
            for(var i=0;i<array.length;i++){
                for(var j=i+1;j<array.length;j++){
                    if(array[j]===array[i]){
                        array.splice(j,1);
                        j--;
                    }
                }
            }
            return array;
        }

        console.log(unique(arr));
    </script>

方案三:排序

  • 将原数组进行排序,然后将元素与相邻元素进行比较,如果相同则删掉,如果不同则保留
    <script type="text/javascript">
        var arr = [1,1,3,5,6,2,6,2,2,3,4,5];

        function unique(array){
            array.sort();
            for(var i=0;i<array.length;i++){
                if(array[i]===array[i+1]){
                    array.splice(i,1);
                    i--;
                }
            }
            return array;
        }

        console.log(unique(arr));
    </script>

方案四:对象键值对

  • 利用对象属性存在的特性,如果没有该属性则存入新数组。
    <script type="text/javascript">
        var arr = [1,1,3,5,6,2,6,2,2,3,4,5];

        function unique(array){
            var obj = {};
            var newArr = [];
            for(var i=0;i<array.length;i++){
                if(!obj[array[i]]){
                    obj[array[i]] = 1;
                    newArr.push(array[i]);
                }
            }
            return newArr;
        }

        console.log(unique(arr));
    </script>

方案五:es6的Set

  • Set数据结构,它类似于数组,其成员的值都是唯一的。
    <script type="text/javascript">
        var arr = [1,1,3,5,6,2,6,2,2,3,4,5];

        console.log(new Set(arr));
    </script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Methods 1:定义一个新数组,并存放原数组的第一个元素,然后将元素组和新数组的元素对比,若不同则存放在新数组...
    LuckyFBB阅读 1,748评论 0 0
  • 1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判...
    LuckyS007阅读 3,496评论 0 3
  • 思路:1.创建一个新的数组存放结果2.创建一个空对象3.for循环时,每次取出一个元素与对象进行对比,如果这个元素...
    6659a0f02826阅读 1,651评论 0 0
  • 学校门口有一家麻辣烫店,可以用塑料杯打包一小份麻辣烫带走,并不丰富的食材,只有一点豆皮和鱼丸,但是汤很好喝...
    我没有朗姆酒阅读 1,943评论 0 2
  • 1、 用于对元素进行组合。一般用于图片或视频 (注意没有alt) <ficaption>erben</ficapt...
    fa54021d36e2阅读 3,012评论 0 0