• 数组是一种最基本的数据结构,对于其它语言,如C语言,一个数组的元素只能是同一种,js则不然,你可以在任一一个数组中加入任何类型的数据类型。

    创建数组

    在js中,数组(Array)是一种引用类型,你可以像下面这样创建一个Array实例:

    var colors = new Array();
    var colors = new Array(10);     // 传递数量(length)
    var colors = new Array("red","blue","green");   // 传递包含的项
    // 可以省略 new 操作符
    var colors = Array();
    

    当然,大部分情况下我们用的是下面这种字面量表示法:

    var colors = ["red","blue","green"];
    

    数组元素访问

    可以这样访问一个数组的具体值

    var getValue = colors[0];   // red
    colors[3] = "yellow";   // 给数组赋新值
    colors[2] = "black" // 修改数组第三个值为black
    

    方括号中的索引值表示要访问的值,如果要访问的索引超过了现有的项数,会自动增加索引,如上述第二行就会增加索引为“3”的yellow字符串(最大索引是3,数组长度即为4)。

    可以用length方法得到数组的长度

    alert(colors.length);   // 4
    

    可以通过循环输出一个数组的所有值:

    for (var i = 0; i < colors.length; i++) {
      console.log(colors[i]);
    }
    

    访问一个不存在的索引会返回undefined

    操作数组

    添加或删除数组

    我们有一个数组 numbers ,初始化成0到9:

    var numbers = [0,1,2,3,4,5,6,7,8,9];
    

    如果想给这个数组加上一个值(如10),直接给数组最后一个空位的元素赋值

    numbers[numbers.length] = 10;
    

    栈方法

    ECMAScript提供了一种类似栈操作的方法:push()方法和pop()方法

    var colors = ["red","blue","green","yellow"];   // 创建一个数组
    colors.push("black");   // 推入一个值,多个值用,隔开
    alert(colors[4])    // black
    
    colors.pop();   // 移除最后一项同时减少length值
    alert(colors.length);   // 4
    

    队列方法

    队列方法与栈方法相反,提供了shift()方法和unshift()方法,同样是上面的数组。

    alert(colors[0]);   // red
    colors.shift();     // 移除数组第一项
    alert(colors[0]);   // blue
    
    colors.unshift("red");  // 向数组前端添加任意值,用,隔开
    alert(colors[0]);   // red
    

    数组转换

    还是上面的数组,调用toString()方法会返回数值中每个值用逗号分隔的拼接起来的字符串

    alert(colors.toString());   // red,blue,green,yellow
    

    但是这样或许还不能满足我们的需求,如果想自定义分隔符,可以调用join()方法,join()方法接受一个参数,作为拼接字符串时的分隔符

    alert(colors.join("|"));    // red|blue|green|yellow