Array类型
数组是除了Object之外最常用的数据类型,javascript中的数组可以保存任何类型的数据,如:第一个位置可以保存数字,第二个位置可以保存字符串,第三个位置可以保存对象等。数组的长度(大小)随着数据的新增加而自动增大。
数组的创建
第一种是通过关键字new后跟构造函数Array()创建
:
var arr1 = new Array();
第二种,如果
预先知道数组的长度即要保存的项目的数量
,也可以向构造函数传递数量:
var arr2 = new Array(5); //预先知道数组的长度为5
var ayy3 = new Array("Tom", "Bob", "color", 2);
注:有多个项目用逗号隔开,最后一个项目后面不用逗号。
第四种,可以省略关键字new,只通过构造函数Array()来创建:
var arr4 = Array(5); //可以传递项目的长度
第五种,可以用字面量法创建数组:使用中括号把项目内容括起来即可,最后一个项目后面不加逗号。
var arr5 = ["Tom", "Bob", "color", 2]
数组的访问及值的设置
var arr6 = ["blue", "red", "yellow"];
alert(arr6[0]); //访问第一个位置的值并弹出blue
alert(arr6[2]); /访问第三个位置的值并/弹出yellow
arr6[2] = "orange"; //设置或改变第三个位置的值
var arr6 = ["blue", "red", "orange"];
length
属性可以得到数组的长度或者说是组成数组的项目的个数。
var arr7 = ["blue", "red", "yellow"];
alert(arr7.length); //弹出3,数组的长度为3,由3个项目组成
也可以通过length属性来设置数组的值,一般是在数组的最后一个项目后面新增一个项目。
var arr6 = ["blue", "red", "yellow"];
arr6[arr6.length] = "orange"; //意义为在arr6[3]的位置新增项目orange
var arr6 = ["blue", "red", "yellow", "orange"];
var arr6 = ["blue", "red", "yellow"];
arr6.length = 2;
控制之后原数组变成了:
var arr6 = ["blue", "red"]; //长度为2,数组中包含两个项目,后后截断内容。
var arr6 = ["blue", "red", "yellow"];
arr6.length = 2;
alert(arr6[2]); //undefined 此时第三个位置没有值了
var arr6 = ["blue", "red", "yellow"];
arr6.length = 4;
alert(arr6[3]); //undefined
相当于:
var arr6 = ["blue", "red", "yellow", "undefined"];
虽然将数组的长度增加到了4,但未对第四个位置赋值,所以值是undefined。
var arr6 = ["blue", "red", "yellow"];
arr6[99] = "orange";
alert(arr6.length); //此时数组的长度为100,弹出100
检测数组
var arr6 = ["blue", "red", "yellow"];
if (arr6 instanceof Array) {
alert(arr6[1]); //弹出red
}
instanceof
在只有一个全局环境中执行,当有两个全局执行环境的情况下,构造函数的版本不同。
Array.isArray()
检测某个值是不是数组。可以解决不同全局环境的情况。
转换方法
所有对象都具有
toLocalString()
、
toString()
和
valueOf()
方法。
toString()
方法返回由数组中
每个值的字符串
形式拼接而成的一个
以逗号隔开的字符串
。
valueOf()
方法返回的还是
数组
。
实际上,为了创建这个新成的字符串会
调用数组第一项的toString()
方法。
var colors = ["red", "blue", "yellow"];
alert(colors.toString()); //red,blue,yellow 返回的是每个值的字符串形式拼接成的以逗号隔开的字符串
alert(colors.valueOf()); // red,blue,yellow 返回的还是数组
alert(colors); //red,blue,yellow 后台调用toString()方法
alert()要接收字符串参数,后台会调用toString()方法。
toString()方法、valueOf()方法、alert()都会调用数组的第一项的toString()方法。
toLocalString()
方法也返回与前两个方法类似相同的值,唯一的区别在于toLocalString()方法会
调用数组第一项的toLocalString()方法
。
join()方法
前面三种方法,在默认情况下是以逗号隔开字符串的,join()方法可以自定义用分隔符隔开字符串,可以使用不同的分隔符来构建这个字符串。
var colors = ["red", "blue", "yellow"];
alert(colors.join("-")); //返回red-blue-yellow
alert(colors.join("||")); //返回red||blue||yellow
如果不给join()方法传入参数或者传入undefined,则默认使用逗号隔开字符串。
如果数组中的某一项是null或undefined,使用以上四种方法返回的结果中是以
空字符
表示的。