创建数组一
在JavaScript中,Array类型也是相当常用的一种类型。而且JavaScript中的数组与其他语言中的数组有着很大的区别。虽然js中的数组与其它语言中的数组都是有序列表,但与其它语言不同的是,js中的数组的每一项都可以保存任何类型的数据。也就是说数组的第一个值可以是字符串,第二个值可以是数值,第三个值可以是布尔值、对象等等。并且js数组可以动态调整大小。
创建数组的基本方式有两种。第一种是使用Array构造函数,如下所示:
var colors = new Array();
如果预先知道数组要保存的项目数量,可以给构造函数传递该数量,该数量会自动变成length属性的值,即数组的长度。看下面的例子:
var colors = new Array(20);//创建一个长度为20的数组
也可以向Array构造函数传递数组中具体的项,如下所示:
var colors = new Array('red','pink','green');//创建了一个包含3个值的数组
当只给构造函数传递一个参数时就要注意了,因为如果传递的参数是一个数值,则会按照该数值创建包含给定项数的数组,即这个数值会变成数组的长度值。而如果传递的是其它类型的参数,则会创建包含这个值的长度为1的数组。如下示例:
var colors = new Array(3); //长度为3的空数组
var names = new Array("Alvin");//长度为1且包含一个值Alvin的数组
另外在使用Array构造函数时也可以省略new关键字,如下所示省略new关键字得到的结果是一样的:
var colors = Array(3); //长度为3的空数组
var names = Array("Alvin");//长度为1且包含一个值Alvin的数组
创建数组二
创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组值方括号表示,多个数组项之间用逗号分隔,如下所示:
var colors = ['red', 'pink', 'green']; //创建一个包含3个字符串的数组
var names = []; //创建一个空数组
上面的代码中分别创建了一个长度为3且包含3个字符串的数组和一个空数组。
在读取和设置数组值时,要使用方括号并使用下标的形式进行访问或设置,下标从0开始。来看下面的例子:
var colors = ['red', 'pink', 'green'];
console.log(colors[1]); //pink
colors[0] = 'yellow'; //将第一个元素值更新为yellow
colors[3] = 'blue';//添加一个新的值 blue
方括号中的索引表示要访问的值。如果索引小于数组的长度,则返回对应的索引的值。在 这个例子中colors[0]会返回‘red’。设置数组的值也是一样,但是会替换掉指定索引位置的原来的值。如果设置某个值的索引超过了数组的长度,比如colors[3],数组就会自动增加到该索引值加1的长度。数组的长度保存在length属性中,这个属性始终返回0或更大的值。如下代码所示:
var colors = ['red', 'pink', 'green'];
var names = [];
console.log(colors.length);//3
console.log(names.length); //0
数组的length属性很有特点,它不是只读的,因此通过设置这个属性,可以从数组的末尾移除项或添加项
var colors = ['red', 'pink', 'green']; //创建长度为3的数组
colors.length = 2; //设置数组的长度为2
console.log(colors[2]);//undefined
在上面的代码片段中,我们将数组的长度改为2后发现在访问数组的第3项值时就变成了undefined。如果将其length属性设置为大于数组项数的值,则新增的每一项都会取得undefined值。
判断一个对象是否是数组,可以用Array.isArray(obj)来判断。例如:
var colors = ['red', 'pink', 'green'];
console.log(Array.isArray(colors));// true
转换方法
toLocaleString()
toString()
valueOf()
在讲Object类型时,我们已经提到:所有对象都具有toLocaleString()、toString()和valueOf()方法。其中调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。为了更深入理解,我们来看下面的例子:
var colors = ['red', '