1. 程式人生 > >陣列去重的六種方法與擴充套件

陣列去重的六種方法與擴充套件

方法一:

            function unique11(arr){
                arr.sort(function(a,b){return a-b;});
                var result=[];
                for(var i=0;i<arr.length;i++){
                    if(arr[i+1]!==arr[i]){
                        result.push(arr[i]);;
                    }
                }
                return
result; } console.log(unique11([1,2,2,2,12,3,4,5]));
            function unique12(arr){
                return arr.concat().sort().filter(function(value, index, array) {
                    return !index || value != array[index - 1];
                });
            }
            console.log(unique12([1
,2,2,2,12,3,4,5]));

方法二:

            function unique21(arr){//更快一點
                var  result=[];
                for(var i=0;i<arr.length;i++){
                    if(result.indexOf(arr[i])===-1){
                        result.push(arr[i]);
                    }
                }
                return
result; } console.log(unique21([1,2,2,2,12,3,4,5]));
            function unique22(arr){//更快一點
                var  result=[];
                for(var i=0;i<arr.length;i++){
                    (result.indexOf(arr[i])===-1)&&result.push(arr[i]);
                }
                return result;
            }
            console.log(unique22([1,2,2,2,12,3,4,5]));

方法三:

            function unique31(arr){
                var obj={},result=[];
                for(var i=0;i<arr.length;i++){
                    if(!obj[arr[i]]){
                        result.push(arr[i]);
                        obj[arr[i]]=true;
                    }
                }
                return result;
            }
            console.log(unique31([1,2,2,2,12,3,4,5]));
            function unique32(arr){
                var obj={};
                return arr.filter(function(key) {
                    return obj.hasOwnProperty(key) ? false : (obj[key] = true);
                });
            }
            console.log(unique32([1,2,2,2,12,3,4,5]));

方法四:

            function unique41(arr){
                var result=[];
                for(var i=0;i<arr.length;i++){
                    if(arr.indexOf(arr[i])===i){
                        result.push(arr[i]);
                    }
                }
                return result;
            }
            console.log(unique41([1,2,2,2,12,3,4,5]));
            function unique42(arr){
                var  result=[];
                result=arr.filter(function(value,index,array){
                    return array.indexOf(value)===index;
                })
                return result;
            }
            console.log(unique42([1,2,2,2,12,3,4,5]));

方法五:

            function unique5(arr){//優化的遍歷陣列,推薦的方法,獲取沒重複的最右一值放入新陣列。
                var result = [];
                var len = arr.length;
                for(var i = 0; i < len; i++) {
                    for(var j = i + 1; j < len; j++){
                        if (arr[i] === arr[j]){
                            j=++i;//i=i+1;j=i; 找到最近的那個後面再沒有相同的值的元素插進去
                        }
                    }
                    result.push(arr[i]);
                }
                return result;
            }
            console.log(unique5([1,2,2,2,12,3,4,5]));

方法六:

            function unique61(arr){
                return [...(new Set(arr))];
            }
            console.log(unique61([1,2,2,2,12,3,4,5]));

            function unique62(arr){
                return Array.from(new Set(arr));
            }
            console.log(unique62([1,2,2,2,12,3,4,5]));