zoukankan      html  css  js  c++  java
  • &&&&数组去重方法总结&&&&&

    【数组去重】本文一共总结了5种方法:

    //方法一:sort方法
    var ary = [1, 4, 2, 3, 1, 2, 2, 3, 3, 2, 5, 2, 1, 2];
    Array.prototype.rmSame = function () {
        var ary = this.sort(function (a, b) {
            return a - b
        });
        for (var i = 0; i < ary.length; i++) {
            if (ary[i] === ary[i + 1]) {
                ary.splice(i, 1);
                i--;
            }
        }
        return ary;
    };
    console.log(ary.rmSame());
    //方法二,双循环比较
    var ary1 = [1, 4, 2, 3, 1, 2, 2, 3, 3, 2, 5, 2, 1, 2];
    Array.prototype.rMsame = function () {
        for(var i=0;i<this.length;i++){
             var oLis=this[i];
            for(var j=i+1;j<this.length;j++){
                if(oLis===this[j]){
                    this.splice(j,1);
                    j--;
                }
            }
        }
        return this;
    };
    console.log(ary1.rMsame());
    //方法三:键值对
    var ary = [1, 2, 1, 2, 1, 2, 1, 4, 5, 63, 2, 5, 432, 24];
    Array.prototype.rmSome = function () {
        var obj={};
        for(var i=0;i<this.length;i++){
            var cur=this[i];
            if(obj[cur]==cur){
                this[i]=this[this.length-1];
                this.length--;
                i--;
                continue;
            }
            obj[cur]=cur;
        }
        return this;
    };
    console.log(ary.rmSome());
    //方法四 新数组
    var ary1=[];
    for(var i=0; i<ary.length; i++){
        /!*if(ary1.indexOf(ary[i])==-1){
            ary1.push(ary[i]);
        }else{
            ary.splice(i,1);
            i--;
        }*!/
        if(ary1.indexOf(ary[i])==-1){
            ary1.push(ary[i]);
        }
    }
    //方法五 可以记录对象的数组去重
    var obj={};
    for(var i=0; i<ary.length; i++){
        var cur=ary[i];
        if(obj[cur]){
            obj[cur]++;
        }else{
           obj[cur]=1;
        }
    }
    var ary=[];
    for(var attr in obj){
        ary.push(attr);
    }
  • 相关阅读:
    项目开发日志——第三篇
    项目开发日志——第二篇
    项目开发日志——第一篇
    实时控制软件设计第四周作业
    实时控制软件设计第三周作业
    实时控制软件设计第二周作业
    关于开放式CNC系统实时软件控制系统的一些简单分析
    初学者的卡尔曼滤波——扩展卡尔曼滤波(一)
    C++_Eigen函数库用法笔记——The Array class and Coefficient-wise operations
    C++_Eigen函数库用法笔记——Block Operations
  • 原文地址:https://www.cnblogs.com/HKCC/p/6060616.html
Copyright © 2011-2022 走看看