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互逆的,按参数拆开

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

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

  • 相关阅读:
    ios 手势加变形
    ios 懒加载
    [leetCode]1111. 有效括号的嵌套深度
    [leetCode]面试题 08.07. 无重复字符串的排列组合
    [leetCode]46. 全排列
    [leetCode]37. 解数独
    [leetCode]面试题 08.09. 括号
    torch.Tensor 与 numpy.ndarray的相互转化
    [leetCode]93. 复原IP地址
    [leetCode]15. 三数之和
  • 原文地址:https://www.cnblogs.com/qingyang-0-0/p/9389211.html
Copyright © 2011-2022 走看看