一、简介
除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了。下面就来分析ECMAScript中的数组与其他语言中的数组的异同性:
1、相同点:
(1)他们都是数据的有序列表
(2)语法和作用都类似
2、不同点:
(1)Array数组中的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,第三个位置来保存对象的指针
(2)Array数组的大小是可以动态调整的(部分其他的语言也有此特性),即随着数组中数据的添加自动增长以容纳新增数据。
二、使用方式和相关方法介绍
1、创建数组实例的方式有两种:
1.1 第一种:使用new和Array构造函数,代码如下:
var colors=new Array();
1.1.1
我们可以在创建数组实例的同时给该实例限定长度,代码如下:
var colors=new Array(20);
这样就创建了一个长度为20的数组。
1.1.2
我们也可以在创建数组的同时给他初始化,代码如下:
var colors=new Array("red","blue","green");
1.2 第二种方式是使用Array构造函数不使用new操作符,代码如下:
var colors=Array("red","blue","green");
1.3第三种方式使用数字字面量表示法(和Object类型的字面量表示法一样)。代码如下:
var colors=["red","blue","green"];
var colors=[]; //创建了一个空数组
这里注意:通过对象字面创建的数组在创建时就不会调用Array构造函数了,这与Object引用类型创建实例使用对象字面量法一样它也不会调用Object构造函数!
2、Array数组操作
1、下面通过代码来讲解下Array数组的基本操作:
var colors=["red","blue","green"]; //定义一个字符串数组
alert(colors[0]); //显示第一项
colors[2]="black"; //修改第三项
colors[3]="brown"; //新增第四项
但是有一点需要注意,如下代码:
var colors=["red","blue","green"];
colors.length=2;
alert(colors[2]); //输出:undefined
分析上面代码,当使用对象字面量定义了colors数组时,其初始长度是3,当我们修改其长度为2时,这是第三项就会被砍掉,然后我们在输出第三项,就会输出"undefined";
上面代码是将长度缩小的情况,下面来分析如果将长度增加的情况,如下代码:
var colors=["red","green","blue"];
color.length=4;
alert(colors[3]); //输出:undefined
分析上面的代码:初始化定义的长度为3,当将其长度设为4时,那么新增的那项的值就会被设为"undefined",新增的每一项都是!
2、检测数组的方式
在一些特殊应用开发中,我们经常需要判断一个对象是不是一个数组,所以ECMAScript 5提供了两种方法来判断一个对象是不是数组
(1)对一个全局作用域而言,使用instanceof操作符就能得到满意的结果,代码如下:
if(value instanceof Array){
//对数组执行某些操作
}
(2)上面的判断方法是基于一个全局作用域下的,但是有些网页可能包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,但是两个框架有各自的Array构造函数!
所以为了解决这个问题,ECMAScript 5中新增了Array.isArray()方法。这个方法的作用是判断一个值到底是不是数组,而不管它实在哪个全局环境中创建的。代码如下:
if(Array.isArray(value)){
//对数组执行某些操作
}
注意:第二个方法有浏览器限制!