在js中数组就是值的有序集合。每个值叫做一个元素,元素在数组中的位置叫做索引。
- JavaScrit数组是无类型的: 元素可以是任意类型,不同元素的类型可以不同。
- JavaScrit数组是动态的: 可根据需要增长或缩减,不需要在创建数组时声明长度。
- JavaScrit数组可能是稀疏的: 数组元素的索引不一定要连续,它们之间可以有空缺。
在JavaScrit中,数组是对象的特殊形式,数组索引实际上和整数的属性名差不多。
创建数组
一、直接量
数组中的 值不一定要是常量,也可以是任意的表达式、函数、对象。
例子:
var a = [1,"a", 1+1,{x:1,y:2},function(){alert(5)}];
如果省略了数组直接量中的值[,1,2],省略的元素将被赋值为undefined。数组直接量允许有可选的逗号,故[,,]只有两个元素。
二、构造函数
调用Array()是创建数组的第二种方法。此方法可接收很多参数。
- Array()没有参数的时候创建一个没有任何元素的空数组,数组长度为零。
- Array(10)有一个参数并且参数是一个<=0且>2的32次方-2的整数的时候指定他的长度,否则表示指定第一个(即索引为0)元素 。PS:这个数组除了length属性为10以为,其他与Array()没有区别。
- Array(1,2,"hello")有两个或两个以上的参数将被看做显示指定数组元素。
数组元素的读和写
使用[]操作符来读、写一个数组元素。以下代码都是合法的:
var a = ['hello']; //从一个元素的数组开始
var value = a[0];//读第0个元素
a[1]=3.14;//写第1个元素
var i = 2; //定义i
a[i]=3; //写第2个元素
a[i+1]="ketty"; //写第三个元素
a[a[i]]=a[0] //读第0个和第2个元素,写第三个元素
请记住,数组是对象的特殊形式。数组的特别之处在于,当使用小于2的32次方的非负整数作为属性名时,数组会自动维护其length属性值。例子:
var a = [1]; //此时a的length属性值为1
a[100] = "我是100";//此时a的length属性值为101
所以,要清晰的区分数组的属性名和索引。在直接量中只有小于2的32次方的非负整数(字符串也行)才会被数组视为索引。例子:
a[-1.23] = true; //创建一个属性名为-1.23的属性
a["100"] = 1 //这是数组的第101个元素
a[1.000] //和a[1]相等
稀疏数组
稀疏数组就是包含从0开始的不连续的数组。可以理解为数组的length属性值大于最大索引值-1的数组。下面个些例子:
a = new Array(5); //数组中没有元素,但是length为5
a[1000] = 0; //添加了一个元素,但是设置length为1001
a= [,,,] //数组是[undefined,undefined,undefined]
也可是用时delete操作符来生产稀疏数组。
(懒)数组并没有什么好介绍的这东西理解起来太简单了。
下面主要介绍数组的N个方法:
push()
在数组末尾增加一个或多个元素;
unshift()
在数组首部增加一个或多个元素;