Array类型
JavaScript中的数组类型与其他语言一样,都是数据的有序排列。但是不同的是,JavaScript中的数组的每一项可以用来保存任何类型的数据,而且数组的大小是可以动态调整的,也就是说JavaScript中的数组长度会随着数据的添加自动增长。
创建一个数组
JavaScript中创建数组有两种方式:
第一种是使用Array构造函数。如下所示:
var colors = new Arary();
如果在定义数组之前知道数组有多少项,可以向构造函数里传递项数参数,这个数组就会生成length属性值。例如:创建一个长度为10的数组。
var colors = new Arary(10);
也可以向构造函数Array()里传递数据的具体项,例如:创建一个包含三个字符串的数组。
var colors = new Arary("purple","green","blue");
在使用构造函数Array()时也可以省略new操作符。例如:
var colors = Array(3); //创建一个长度为3的数组
var name = Array("诺男"); //创建一个包含一个字符串"诺男"的数组
第二种是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数据项之间以逗号隔开。例如:
var colors = ["purple","green","blue"]; //创建一个包含3个字符串的数组
var name = []; //创建一个空数组
var value = [1,2,3]; //创建一个长度为3的数组
取值和赋值
在读取和设置数组的值时,要使用方括号并提供相应值的位置索引。如下所示:
var colors = ["purple","green","blue"];
console.log(colors[0]); //purple
colors[2] = 'black'; //修改第三项
colors[3] = 'brown'; //增加第四项
数组属性
数组的长度值保存在length属性中,这个属性值始终会返回一个大于等于零的值。比如:
var colors = ["purple","green","blue"];
console.log(colors.length); //3
colors.length = 2; //将数组的长度改为2
console.log(colors[2]); //undefined
这个例子中,数组colors最初有3个值,将数组length属性改为2后,会删除数组的最后一项(位置为2的一项)。所以,当你访问coloes[2]时会返回undefined。如果增加呢?比如:
var colors = ["purple","green","blue"];
console.log(colors.length); //3
colors.length = 4;
console.log(colors[3]); //undefined
数组colors的长度增加后,由于colors[3}位置上没有值,所以当你访问这个值时,会返回undefined。
利用length这个属性可以很方便的在数组末尾增加新项。比如:
var colors = ["purple","green","blue"];
colors[colors.length] = 'black'; //在位置3上加一种颜色
console.log(colors.length); //4
colors[colors.length] = 'brown'; //在位置4上加一种颜色
console.log(colors.length); //5
由于数组是从0开始计数,所以数组的最后一位是length-1,因此下一个新项的位置就是length。每次数组末尾增加一项后,length的值都会随之增加1。
转换方法
在JavaScript中,所有对象都有toLocaleString()、toString()、valueOf()方法。其中,调用valueOf()方法返回的是数组本身,而调用数组的toString()方法会返回数组中每个值的字符串形式拼接成的一个以逗号分隔的字符串。实际上,为了创建这个字符串数组会调用数组每一项的toString()方法。
var colors = ["purple","green","blue"];
console.log(colors.toString()); //purple,green,blue
console.log(colors.valueOf()); //(3) ["purple", "green", "blue"]
console.log(colors); //(3) ["purple", "green", "blue"]
数组继承的toLocaleString()、toString()、valueOf()方法,在默认情况下会以逗号分隔的字符串形式返回数组项。如果使用join()方法则可以使用不同的分隔符。join()方法值能接受一个参数用作分隔字符串的字符,然后返回包含所有数组项的字符串。举个例子:
var colors = ["purple","green","blue"];
console.log(colors.join(',')); //purple,green,blue
console.log(colors.join('?')); //purple?green?blue
console.log(colors.join('$')); //purple$green$blue
在传递逗号的情况下,得到了以逗号分隔的字符串;在传递?的情况下,得到了以?分隔的字符串;在传递美元符号的情况下,得到了以美元符号分隔的字符串。如果不给join()方法传值,或者传入undefined的情况下,会使用默认的逗号分隔
注意:如果数组中的某一项的值是null或者undefined,那么该值在join()、toLocaleString()、toString()、valueOf()方法中返回的结果会以空字符串表示。