zoukankan      html  css  js  c++  java
  • js实现数组去重怎么实现?

    方法1. 创建一个新的临时数组来保存数组中已有的元素
    
    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());
    方法2. 使用哈希表存储已有的元素
    
    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;
    }
    方法3. 使用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;
    }
    方法4. 先排序再去重
    
    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;
    }
    
  • 相关阅读:
    Linux/UNIX线程(1)
    jeecms 链接标签
    JEECMS 系统权限设计
    jeecms 前台拦截器的研究与改造
    jeecms系统_自定义对象流程
    jeecms技术预研
    jeecms获取绝对路径
    JEECMS自定义标签
    jeecms项目相关配置文件
    [jeecms]获取父栏目下的子栏目名称
  • 原文地址:https://www.cnblogs.com/shiyunfront/p/10385424.html
Copyright © 2011-2022 走看看