一、创建数组的基本方式(两种):
1、使用Array构造函数(可以省略new操作符,省略后的效果一样):
var arr = new Array(10); //创建一个length属性值为10的数组
var arr = new Array("哈哈"); //创建一个包含一项,即字符串"哈哈"的数组
括号里只有一个数值时,该数值为创建数组元素的个数;两个或多个时,数值为数组的元素
2、数组字面量表示法
var arr = [];
var arr = [1,2,]; //不要这样!这样可能会创建一个包含2或3项的数组
console.log(arr.length); //IE返回3;其他浏览器返回2
var all = [, , , , ,]; //不要这样!这样可能会创建一个包含5或6项的数组
console.log(all.length); //IE返回6;其他浏览器返回5
数组all的结果与调用Array构造函数时传递项数在逻辑上是相同的。但是由于IE的实现与其他浏览器不一致(IE会创建包含6项的数组,而其他浏览器会创建包含5项的数组),因此建议不要使用这种语法。
ps: 域对象一样,在使用数组字面量表示法时,也不会调用Array构造函数(Firefox3-除外)
二、索引
读取或设置书序的值。
var arr = ["red", "blue"];
arr[0] = "green"; //设置
arr[4] = "back"; //新增
三、length属性
通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。
var arr = ["red", "blue", "green"];
arr.length = 1; //移除索引值为0后面的所有元素
var arr = ["red", "blue", "green"];
arr.length = 5; //新增项 arr = ["red", "blue", "green", ,] 以逗号扩展补充
新增项,等同于push()方法:
var arr = ["red", "blue", "green"];
arr[arr.length] = "gray";
arr[arr.length] = "yellow";
document.write(arr);
创建复杂的数组:
var arr = [
{
name: "zhangsan",
age: 20
},
[1, 3, 4, "haha", new Object()],
"hello!",
20 + 10,
new Array(1, 2, 3)
];
document.write(arr.length); //5
document.write(arr[0].name); //zhangsan
arr[1][4].say = "hi";
document.write(arr[1][4].say);
ps: 数组最多可包含4 294 967 295个项,超出即会发生异常。
四、检测数组
- ArrayName instanceof Array; 操作符
- Array.isArray(ArrayName);方法
instanceof操作符
对于一个全局作用域而言,使用instanceof操作符就能得道结果(有些IE不支持)。
instanceof操作符的问题在于,它假定只有一个全局执行环境。如果有两个以上全局执行环境(如有多
个框架时)就会存在两个以上不同版本的Array构造函数。
var ary = [1, 2, 3, 4, 5];
var obj = {name:"lis", age: 13};
console.log("ary是不是数组:" + (ary instanceof Array));
console.log("obj是不是数组:" + (obj instanceof Array));
Array.isArray()方法
支持此方法的浏览器有IE9+、Firefox 4+、Safari 5+、opera 10.5+和chrome。
console.log("ary是不是数组:" + Array.isArray(ary));
console.log("obj是不是数组:" + Array.isArray(obj));