首页 > 编程语言 > 详细

JS 7种数组去重的方法

时间:2020-03-29 18:12:47      阅读:58      评论:0      收藏:0      [点我收藏+]

JS 数组去重的方法

方法一:多层循环比较

利用splice的特性,比较两个数是否相同,获得相同元素的下标,删除相同元素,改变原数组,获得去重后的数组

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

方法二:利用indexOf()

设置一个新的数据用来接收数据,利用indexOf 来判断 数据是否存在于 新数组中,不存在,则添加进去,获得去重后的新数组

        function uniqueArr(arr){
            var newArr = [];
            for(var i = 0;i < arr.length;i++){
                if(newArr.indexOf(arr[i]) < 0){
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }

方法三:对象键值对法

定义一个对象,用数组中的元素作为对象属性名,如果对象名不存在,那么将该元素添加到新数组中,给对应的属性值 设置 一个值作为标记,不一定为1,获得去重后的新数组

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

方法四:

定义一个新数组,将 arr 的第一个值添加到新数组中作为比较对象,遍历从数组的第二个值开始逐一比较 push 后的新数组中每个元素比较,看是否有相同的,不同就添加,获得不重复新数组

        function uniqueArr(arr){
            var newArr = [arr[0]];
            for(var i = 1;i < arr.length;i++){
                var flag = false;
                for(var j = 0;j < newArr.length;j++){
                    if(newArr[j] === arr[i]){
                        flag = true;
                        break;
                    }
                }
                if(!flag) newArr.push(arr[i]);
            }
            return newArr;
        } 

方法五:先排序,再相邻两两比较

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

方法六:利用indexOf和 lastIndexOf方法判断

利用indexOf() 方法的特性,从数组下标0开始查找元素,返回第一次出现位置的下标,lastIndexOf() 从数组末尾开始查找元素,返回从后向前找到元素的第一次出现位置的下标。
如果从数组开始进行查找 的元素和从后进行查找的元素 下标相同,表示找到的是同一个元素。

        function uniqueArr(arr){
            for(var i = 0;i < arr.length;i++){
                if( arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])){
                    arr.splice(arr.lastIndexOf(arr[i]),1);
                }
            }
            return arr;
        }

方法七:ES6 Set()方法

new Set() 方法不允许有重复数据,但是返回的是一个类数组,所以要用 Array.from()方法转换成数组

        function uniqueArr(arr){
            return Array.from(new Set(arr));
        }

JS 7种数组去重的方法

原文:https://www.cnblogs.com/ybzy/p/12593344.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!