一、初识数组
在程序语言中数组有多重要不需要我这个程序媛再复述了,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活,不像Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改。Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能。
用js有三四年了,但一直没有深究过js的数组形式。偶尔用用也就是简单的string.split(char)之类的。最近公司的一个项目,用到数组的地方很多,自以为js还可以的wo居然无从下手,霸气外露的狮女怎么可能允许自己手忙脚乱的狼狈模样?我就潜心下来会会它,呵呵。今天还是跟着思维导图走(这个概括的太很好!)。js数组的功能很强大,远比VB,C#强多了!下面就一点一点来看看这个“怪兽”(javascript数组)有多强大……
二、数组的创建
1.创建方式
在JavaScript多种方式创建数组
构造函数
1.空数组:无参构造函数,创建一空数组
var obj = new Array();
2. 指定长度数组:一个数字参数构造函数,指定数组长度(由于数组长度可以动态调整,作用并不大),创建指定长度的数组
var obj = new Array(size);
var obj = new Array(5); //size=5
3.指定元素数组:带有初始化数据的构造函数,创建数组并初始化参数数据
var obj = new Array(e1,e2,e3,……);
var a3=new Array(4,'hello',new Date()); //数组元素类型可以不一致
4.n维数组(n>=1)
单维数组:var obj = {e1, e2, e3,…… ,en};
多维数组:var obj1 = {e1, e2, e3,…… ,en};
var obj2 = {e1, e2, e3,…… ,en};
……
var obj = {obj1, obj2, …… ,objn};
字面量1.使用方括号,创建空数组,等同于调用无参构造函数
var obj=[]; <=> var obj = new Array();
2.使用中括号,并传入初始化数据,等同于调用调用带有初始化数据的构造函数
var obj=[10]; <=> var obj = new Array(10);
注意点
1.在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则创建一个数组,参数作为初始化数据加到数组中
var a1=new Array(5);
console.log(a1.length);//5
console.log(a1); //[] ,数组是空的
var a2=new Array(5,6);
console.log(a2.length);//2
console.log(a2); //[5,6]
2.但是使用字面量方式,无论传入几个参数,都会把参数当作初始化内容
var a1=[5];
console.log(a1.length);//1
console.log(a1); //[5]
var a2=[5,6];
console.log(a2.length);//2
console.log(a2); //[5,6]
3.使用带初始化参数的方式创建数组的时候,最好最后不要带多余的”,”,在不同的浏览器下对此处理方式不一样
var a1=[1,2,3,];
console.log(a1.length);
console.log(a1);
这段脚本在现代浏览器上运行结果和我们设想一样,长度是3,但是在低版本IE下确实长度为4的数组,最后一条数据是undefined
另外有一个需要再强调一下:
第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,这时长度会随之改变。