zoukankan      html  css  js  c++  java
  • JavaScript数组常用的方法

    改变原数组:

    ※ push,pop,shif,unshift,sort,reverse

    ※ splice

    不改变原数组:

    ※ concat,join→split,toString,slice

    push :后一位添加

    pop :后一位删除

    shift :前一位删除

    unshift :向前一位添加

    sort  :给数组排序(按ASCLL)

    reverse :逆转顺序

    splice :切片 

    系统push方法的实现:

    var arr=[1,2,3];
        Array.prototype.push=function(){
            for(var i=0; i<arguments.length; i++){
                this[this.length]=arguments[i];
            }
            return this.length;
        }

    splice方法:

    var arr=[1,1,2,2,3,3];
        //arr.splice(从第几位开始,截取长度,在切口处添加新数据)
        arr.splice(1,2);

    arr.splice(1,1,0,0...)后面的参数无穷个

    数组内部负数实现原理:

    var arr=[1,2,3,4];
        splice=function(pos){
            pos += pos>0 ? 0:this.length;
        }

    ASCLL排序,不是理想中的排序,我们要按照数字大小排序,sort给我们留个编程接口让我们自己实现。里面添加匿名的function(必须要写两个形参){规则}

    1.必须写两形参

    2.看返回值:1)当返回值为负数,那么前面的数放在前面

          2)为正数,那么后面的数放在前面

          3)为0,不动

    var arr=[2,4,9,10,13,18,20];
        arr.sort(function(a,b){
            if(a>b){
                return 1;
            }else{
                return -1;
            }
        })

    简化前面代码:

    var arr=[2,4,9,10,13,18,20];
        arr.sort(function(a,b){
            return a-b;
        })

    条件判断a-b是否大于0,直接返回a-b

    给数组乱序:

     

    var arr=[2,4,9,10,13,18,20];
        arr.sort(function(){
            return Math.random()-0.5;
        })

     

    按字符串长度排序:

    var arr=["aaa","dddd","ccccd","dd","abcddddd"];
        arr.sort(function(){
            return a.length-b.length;
        })

    按字节长度排序:

    function retBytes(str){
                var num=str.length;//接收字符串长度
                for(var i=0;i<str.length;i++){//遍历字符串
                    if(str.charCodeAt(i)>255){//判断字符是中文还是英文字符
                        num++;//中文字符字节长度+1
                    }
                }
                return num;
            }
            var arr=['ac邓','bcd邓','ccccc老邓','dddddccc','dfhionnnangh'];
            arr.sort(function (a,b){
                return retBytes(a)-retBytes(b);//比较字节是长度
            })

    concat拼接,不改变原数组

    slice截取,不改变原数组

    join连接,参数必须字符串类型

    split和join互逆的,按参数拆开

    字符串拼接,这样不好,字符串放在栈内存,原始值放在栈内存存储,栈先进后出,放在箱底里的东西,箱子上面的东西拿出来再放进去,拿出来再拼到一起,来回折腾栈,效力低。

    数组是散列存储结构,是堆内存,散列结构,效率会高。

  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/qingyang-0-0/p/9389211.html
Copyright © 2011-2022 走看看