数组是一种最基本的数据结构,对于其它语言,如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