数组去重的六种方法与扩展

来源:互联网 发布:tfs文件系统java 编辑:程序博客网 时间:2024/05/18 00:54

方法一:

            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]));
原创粉丝点击