数组去重的方法

76 阅读1分钟

一.

js<script>
        var arr = [1,1,1,1,1,3,23,5,6,7,8,9,9,8,5];
        function removeDuplicatedItem(arr) {
            for (var i = 0; i < arr.length - 1; i++){
                for (var j = i + 1; j < arr.length; j++){
                    if (arr[i] == arr[j]) {
                        arr.splice(j,1);//去重
                        j--;
                    }
                }
            }
            return arr;
        }
        arr2 = removeDuplicatedItem(arr);
        console.log(arr2);//去重以后的数组
    </script>

二.

借助indexof()方法判断此元素在该数组中首次出现的位置下标与循环的下标是否相等 indexof()判断的是指定的字符在字符串中首次出现的位置

<script>
        
        var ar = [1,1,1,1,3,23,5,6,7,8,9,9,8,5];
        console.log(ar);
        function rep2(arr) {
            for (var i = 0; i < arr.length; i++) {
                //arr.indexOf(arr[i]) 首次出现的位置
                //i 索引[下标]
                if (arr.indexOf(arr[i]) != i){
                    //删除数组元素后数组长度减1后面的元素前移
                    arr.splice(i, 1);
                    //数组下标回退
                    i--;
                }    
            }
            return arr;
        }
        var a1 = rep2(ar);
        console.log(a1);
    </script>

三.es6的filter方法[过滤]

<script>
        var arr = ['apple','strawberry','banana','pear','apple','orange','orange','strawberry',];
        var r = arr.filter(function(element, index, self){ //element 元素  index 索引 self  数组
            return self.indexOf(element) === index;
        });
        console.log(r);
    </script>

四.

<script>
        var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
        //console.log(arr);
        function rep(arr) {
            var ret = []; //空数组[存放不重复的新值]
            for (var i = 0; i < arr.length; i++) {  //代入:i=0
                if(arr.indexOf(arr[i]) == i) {
                    ret.push(arr[i]);
                }
                //console.log(ret);//观察ret动态
            }
            return ret;
        }
        arr2 = rep(arr);
        console.log(arr2);
    </script>

五.

<script>
        var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
        var o = {};//空对象
        var new_arr = [];//空数组
        for(var i = 0; i < arr.length; i++) {
            var k = arr[i];//代入法:i=2 k=1
            if(!o[k]) {//!o[1]
                o[k] = true;
                new_arr.push(k);
            }
        }
        console.log(new_arr);
    </script>