数组去重的几种封装方法

0、es6方法

let unique = new Set(arr);  
console.log(Array.from(unique)); 

1、遍历数组法:

此方法缺点: IE8以下不支持 indexOF
function unique(array){
    var  n = [];
    for(var i =0; i<array.length; i++){
        if(n.indexOf(array[i])==-1){
            n.push(array[i]); 
        } 
    }
    return ;
}

2、对象键值对法;

此方法优点:速度最快, 缺点:占空间最多
function unique(array){
    var n = {};
    var r = [];
    var len = array.length;
    var val;
    var type;
    for(var i=0; i<array.length; i++){
        val = array[i];
        type = typeof val ;
        if(!n[val]){
            n[val] = [type];
            r.push(val);
        } else if(n[val].indexOf(type)<0){
            n[val].push(type);
            r.push(val);
        }
    }
    return r;
}                   

3、数组下标法:

function unique(array){
    var n = [array[0]];
    for(var i=1; i<array.length; i++){
        if(array.indexOf(array[i])==i){
            n.push(array[i]);
        } 
    }
    return n;
}

4、优化遍历数组法

function unique(array){
    var  r = [];
    for(var i=0; i<array.length; i++){
        for(var j=i+1; j<array.length; j++){
            if(array[i]===array[j]){
                j=++i;
            } 
        } 
        r.push(array[i])
    }  
    return r;
}   

5、

function unique(array){
    var arr = [];
    var obj = {};
    for(var i=0; i<arary.length; i++){
        if(!obj[array[i]]){
            obj[array[i]] = array[i];
            arr.push(array[i])
        }
    }
    return arr 
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cxz792116/article/details/52386415
个人分类: 前端
上一篇伪数组
下一篇数组方法之----reverse() 和 sort()
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭