Js 数组去重

一、利用数组的splice方法

        var array = [1, 2, 3, 4, 5, 6, 1, '1'];

        function unique(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;
        }

        console.log( unique(array) );  //[1, 2, 3, 4, 5, 6]

二、 利用数组的indexOf和splice方法

        var array = [1, 2, 3, 4, 5, 6, 1, '1'];

        function unique(arr) {

            for (var i = 0; i < arr.length; i++) {
                if ( arr.indexOf(arr[i]) != i ) { // indexOf返回某个指定的字符串值在字符串中首次出现的位置
                        arr.splice(i, 1); //该方法向/从数组中添加/删除项目,然后返回被删除的项目。
                        i--;
                    }
            }

            return arr;
        }

        console.log( unique(array) );   // [1, 2, 3, 4, 5, 6, "1"]

三、利用数组的splice方法和借用新的数组

        var array = [1, 2, 3, 4, 5, 6, 1, '1'];

        function unique(arr) {
            var brr = [];

            for (var i = 0; i < arr.length; i++) {
                if ( arr.indexOf(arr[i]) == i ) { // indexOf返回某个指定的字符串值在字符串中首次出现的位置
                    brr.push( arr[i] );        
                }
            }

            return brr;
        }

        console.log( unique(array) );   // [1, 2, 3, 4, 5, 6, "1"]

四、利用对象属性的覆盖特性

        var array = [1, 2, 3, 4, 5, 6, 1, '1'];

        function unique(arr) {
            var obj = {};
            var brr = [];
            for( var i = 0; i < arr.length; i++ ){
                if( !obj[arr[i]] ){
                    obj[arr[i]] = true;
                    brr.push( arr[i] );
                }
            }

            return brr;
        }

        console.log( unique(array) );   // [1, 2, 3, 4, 5, 6]

五、利用es6提供的心的数据类型Set

        var array = [1, 2, 3, 4, 5, 6, 1, '1'];

        function unique(arr) {
            let s = new Set(arr);

            return s;
        }

        console.log( unique(array) );   // [1, 2, 3, 4, 5, 6,'1'];

 

        需要注意的是,上面的方法,有的是可以去掉字符串1,有的则没有去掉。

        个人使用的比较多是第一种和第四种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值