zoukankan      html  css  js  c++  java
  • JavaScript笔记4-数组

    一.概述:
    1.数组是无类型的:同一数组的各元素可以是任意类型,也可以是数组或对象;
    2.索引从0开始,最大到2^32-2=4294967294;最多容纳4294967295个元素;
    3.数组是动态的,根据需要自动增减;创建数组时无需声明大小,且在大小变化时无需重新分配空间;
    4.数组可以是索引连续的(非稀疏数组),也可以是不连续的(稀疏数组),对于稀疏数组来说,length比所有元素的索引要大;
    5.通常数组的实现是经过优化的,用数字索引来访问对象比访问常规对象属性要快的多.

    二.创建数组
    1.var empty = []; //名为empty的空数组
    2.var primes = [1,2,3,4]; //4个元素的数组
    3.var misc = [1.1, true, "a",];//包含3个类型和逗号的数组
    4.
    var base = 1;
    var table = [base, base+1, base+2, base+3];//可以包含表达式
    5.var b = [[1,{x:1,y:2}],[2,{x:3,y:4}]];//包含对象直接量或其它数组直接量
    6.var count = [1, ,3];//第2个元素为undefined
    7.var defs = [ , , ];//数组含2个元素,都是undefined,数组直接量的语法允许有可选的结尾的逗号,所以该数组只有2个元素;
    8.var a = new Array();//调用Array()函数,无参,相当于创建空数组;
    9.var a = new Array(10);//调用Array()函数,创建长度为10的函数;
    10.var a = new Array(5,4,3,"testing, testing");//参数即为新数组的元素,即有4个元素,3个整型+1个字符串;

    三.数组元素的添加/删除
    1.为新索引赋值,即可添加,如a[2]=2;
    2.push()方法在数组末尾添加,如a.push(2),该方式与a[a.length]一致
    3.unshift()方法在数组首部添加,其它元素依次后移
    4.delete删除数组元素,删除时数组长度不变,该位置不再有元素,非稀疏数组变成稀疏数组
    如:a = [1,2,3]
    delete a[1];
    删除索引为1的元素之后,a.length=3; console.log(a[1])会返回undefined;该数组变为稀疏数组

    四.数组遍历
    1.常规for循环
    var a =[1,2,3, null, ,];
    delete a[1];
    var len = a.length;
    console.log(len);//5
    for(var i = 0; i<a.length; i++){
         //跳过null/undefined以及不存在的元素
         // if(!a[i])
         //     continue;
         //console.log(a[i]);//1 3
         //跳过undefined和不存在的元素
         // if(a[i]===undefined)
         //     continue;
         //console.log(a[i]);//1 3 null
         //跳过不存在的元素
         if(!(i in a))
             continue;
         console.log(a[i]);//1 3 null
    }
    2.forEach
    求以下数组各元素的平方和
         var a =[1,2,3, null, ,];
         delete a[1];
         var sq=0;
         a.forEach(function(x){
             sq += x*x;
         });
         console.log(sq);//1+9=10

    五.多维数组
    javaScript不支持真正的多维数组,可以用数组的数组来近似;
    举例:模拟9*9乘法表
    var table = new Array(10);
    for(var i =0; i<table.length; i++){
         table[i] = new Array[10];
    }
    for(var row = 0; row < table.length; row++){
         for(var col=0;col<table[row].length;col++){
             table[row][col]=rol*col;
         }
    }
    console.log(table[5][7]);//35

    六.数组方法
    1.join():将数组元素拼接成一个字符串;返回最终形成的字符串,是String.split()的逆操作;数组没有split()方法.
    2.reverse():将数组颠倒顺序,返回逆序数组.注意是修改原数组,而不是生成新数且;
    3.sort():返回排序后的数组;
         1.不带参数时,以字母表顺序排序(如有必要将临时转为字符串比较);
         2.若包含undefined函数,会被排到数组的尾部;
         3.若自定义规则,需传入函数;假设第一个参数在前,应该返回一个小于0的数;
         举例1:
         var a = [33,4,1111,222];
         // a.sort();
         // console.log(a);//字母表顺序[1111, 222, 33, 4]
         // a.sort(function(x,y){
         //     return x-y;
         // });
         // console.log(a);//[4, 33, 222, 1111]
         a.sort(function(x,y){
             return y-x;
         })
         console.log(a);//[1111, 222, 33, 4]
        
         举例2:
         var b =['ant','Bug','cat','Dog'];
         b.sort(function(x,y){
             var a = x.toLowerCase();
             var b = y.toLowerCase();
             if(a>b){
                 return 1;
             }else if(a<b){
                 return -1;
             }else{
                 return 0;
             }
         })
         console.log(b);//["ant", "Bug", "cat", "Dog"]
    4.concat():返回一个由原数组和该方法的参数组成的新数组;
         注意:1.参数若为数组,则连接数组中的元素,而非数组本身;
             2.不会递归扁平化数组的数组;
             3.不会修改调用的数组;
         举例:
         var a = [1,2,3];
         console.log(a.concat(4,5));//[1, 2, 3, 4, 5]
         console.log(a.concat([4,5]));//[1, 2, 3, 4, 5]
         console.log(a.concat([4,5],[6,7]));//[1, 2, 3, 4, 5, 6, 7]
         console.log(a.concat([4,5],[6,[7,8]]));//[1, 2, 3, 4, 5, 6, Array(2)]
    5.splice():插入或删除元素的通用方法;根据参数不同有如下几种情况:
         1.只有一个参数:删除从这个参数开始(含)直到结尾的元素,并返回由删除元素组成的数组;
         如:var a = [1,2,3,4,5,6,7,8];
         console.log(a.splice(4));//[5,6,7,8]
         2.两个参数:第一个参数为起始位置,第二个参数为删除元素个数(长度),返回由删除元素组成的数组;
         如:var a = [1,2,3,4,5,6,7,8];
         console.log(a.splice(2,2));//[3,4]
         3.传入三个及以上参数:执行先删除,再插入功能.第一个参数指定开始删除及插入的位置,第二个参数为删除的长度,第三个及以后的参数作为数组元素插入;
         如:var a = [1,2,3,4,5,6,7,8];
         console.log(a.splice(2,3,[2,3],4));//[3, 4, 5]
         console.log(a);//[1, 2, Array(2), 4, 6, 7, 8]
         console.log(a.length);//7

    6.push():在数组的尾部添加一个或多个元素(作为栈来使用),并返回新的数组长度;
    pop():删除数组的最后一个元素,减少数组的长度(delete不会减少数组长度),并返回删除的值;该方法无参数,调用一次只删除一个元素;
    注:两个方法都是修改并替换原有数组,而非生成新的数组
    举例:
    var a = [];
    console.log(a.push(1,2,3));//返回数组长度3
    console.log(a.pop());//返回删除的值3
    console.log(a.pop());//2
    console.log(a.length);//1

    7.unshift():从数组头部添加元素;参数作为数组元素添加;
    shifte():从数组头部删除一个元素,无参数;
    举例:
    var a = [9];
    console.log(a.unshift(1,2,3));//在数组头部添加元素并返回数组长度4
    console.log(a);//[1, 2, 3, 9]证明在头部添加
    console.log(a.shift());//返回删除的元素1(从头部开始删除)

    8.toString():将数组的每个元素转化为字符串并输出以逗号分隔的字符串列表;
    toLocalString():使用本地化(和自定义实现的)分隔符将这些字符串连接成最终的字符串;
    举例:
    console.log([1,2].toString());//1,2
    console.log([1,2].toLocaleString());//1,2

  • 相关阅读:
    LInux 解压缩文件
    关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法
    Repository 设计模式介绍
    启明星桌面天气系统和抽奖系统源代码
    关于web.config增加禁止匿名访问而导致pdf失效的问题
    C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher (WMI)
    如何在windows2008/2012上安装启明星系统。
    连接MSSQL2008 Express
    启明星系统加密方法代码
    MSSQL2008 全文索引的创建
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7208712.html
Copyright © 2011-2022 走看看