2.数组元素的操作
上面已经说过,可以通过 数组[下标] 来读写元素
下标的范围是 0 – (23(上标2) -1),当下标是负数、浮点甚至布尔值的时候,数组会自动转换为对象类型,例如
var b = new Array();
b[2.2] = "XXXXX";
alert(b[2.2]); //-> XXXXX
此时相当于b[“2.2”] = “XXXXX”
2.1数组的循环
var a = [1,2,3,4,5,6];
for(var i =0; i
}
这是最常用的,历遍数组,代码将依次弹出1至6
还有一种常用的
var a = [1,2,3,4,5,6];
for(var e in a){
alert(e);
}
还是依次弹出1至6,for…in是历遍对象(数组是特殊的对象)对象,用在数组上,因为数组没有属性名,所以直接输出值,这结构语句用在对象上,例如下面
var a = {x:1,y:2,z:3};
for(var e in a){
alert(e + ":" + a[e]);
}
此时e取到的是属性名,即 x、y、x,而要取得值,则采用 数组名[属性],所以 a[e] 等同于 a[“x”]、a[“y”]、a[“z”]
2.2数组常用函数
concat
在现有数组后面追加数组,并返回新数组,不影响现有数组
var a = [123];
var b = "sunnycat";
var c = ["www",21,"ido"];
var d = {x:3.14, y:"SK"};
var e = [1,2,3,4,[5,6,[7,8]]];
alert(a.concat(b)); // -> 123,sunnycat
alert(a); // -> 123
alert(b.concat(c, d)); // -> sunnycatwww,21,ido[object Object]
alert(c.concat(b)); // -> www,21,ido,sunnycat
alert(e.concat(11,22,33).join(" # ")); // -> 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33
需要注意的是只能用于数组或字符串,如果被连接(前面的a)的是数值、布尔值、对象,就会报错,字符串连接数组时,字符串会跟数组首元素拼接成新元素,而数组连接字符串则会追加新元素(这点我也不清楚原委,知情者请透露),对于数组里面包含数组、对象的,连接后保持原样
join
用指定间隔符连起来,把数组转为字符串
var a = ['a','b','c','d','e','f','g'];
lert(a.join(",")); // -> a,b,c,d,e,f,g 相当于a.toString()
alert(a.join(" x ")); // -> a x b x c x d x e x f x g
这个很容易理解,但需要注意的是只转换一维数组里面,如果数组里面还有数组,将不是采用join指定的字符串接,而是采用默认的toString(),例如
var a = ['a','b','c','d','e','f','g',[11,22,33]];
alert(a.join(" * ")); // -> a * b * c * d * e * f * g * 11,22,33
数组里面的数组,并没用 * 连接