码迷,mamicode.com
首页 > 编程语言 > 详细

js中实现数组去重

时间:2019-06-01 21:12:53      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:说明   prototype   uniq   pre   indexof   turn   var   开始   数组去重   

法一:

创建一个新的临时数组来保存数组中已有的元素,indexOf()可以遍历数组

var a = new Array(1,2,2,2,2,5,3,2,9,5,6,3);
Array.prototype.unique1 = function(){
    var n = [];     //一个新的临时数组
    for(var i=0; i<this.length; i++){
        //如果把当前数组的第i已经保存进了临时数组, 那么跳过
        if(n.indexOf(this[i]) == -1){
            n.push(this[i]);
        }
    }
    return n;
}
console.log(a.unique1());

法二:

使用哈希表存储已有的元素

Array.prototype.unique2 = function(){
    var hash = {},
        n = [];     //hash 作为哈希表, n为临时数组
    for(var i=0; i<this.length; i++){
        if(!hash[this[i]]){         //如果hash表中没有当前项
            hash[this[i]] = true;   //存入hash表
            n.push(this[i]);        //当前元素push到临时数组中
        }
    }
    return n;
}

法三:

使用indexOf判断数组元素第一次出现的位置是否为当前位置,indexOf()可以遍历数组

Array.prototype.unique3 = function(){
    var n = [this[0]]; 
    for(var i=1; i<this.length; i++)    //从第二项开始遍历
    {
        //如果当前数组元素在数组中出现的第一次的位置不是i
        //说明是重复元素
        if(this.indexOf(this[i]) == i){
            n.push(this[i]);
        }
    }
    return n;
}

法四:

先排序再去重

Array.prototype.unique4 = function(){
    this.sort(function(a, b){ return a - b;});
    var n = [this[0]];
    for(var i=1; i<this.length; i++){
        if(this[i] != this[i-1]){
            n.push(this[i]);
        }
    }
    return n;
}

 

js中实现数组去重

标签:说明   prototype   uniq   pre   indexof   turn   var   开始   数组去重   

原文地址:https://www.cnblogs.com/haohao-a/p/10960939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!