数组不过是一个具有额外功能层的对象,
用typeof运行符时返回"object"
数组的额外功能是javaScript1.1中引入的
javaScript是无类型语言 一个数组元素可以具有任意数据类型
同一个数组的不同元素可以具有不同的类型 甚至包含其他数组
1.创建数组
调用Array()或创建数组直接量
三种方式调用Array():
(1)无参调用: var a = new Array(); 创建无元素的空数组
(2)指定数组前n个元素值:var a = new Array(5,"testing, testing");
(3)指定数组长度: var a = new Array(10); 每个元素值均为undefined
( 在NetScape的客户端JavaScript中, 如果<script>标记的language性质被显示地设置
为"JavaScript1.2", 则Array()构造函数默认为创建length为1的数组, 并将元素初始化为
构造函数的参数, 这与ECMAScript标准不同)
创建数组直接量
var a = [2, true, 4.78, "Tianjin University"];
还可以包含对象直接量或其他数组直接量
var a = [[2, true, 4.78, "String"], [2, {x:3, y:4}]];
2.数组元素的读写
value = a[0];
a[1] = 3.14;
a[i] = "Tianjin Unversity";
a[i+1] = 3;
a[a[i]] = a[0];
运算符[ ] 还可用来存取已命名对象的属性:my[' salary '] * =2;
对象与数组的本质是相同的
数组index值须 (>=0) && (<2的32次方-1) && (整数)
若index (数字太大) || (负数) || (float) || (bolean) || (object) || (others), JavaScript会将之转换为字符串, 用生成
的字符串作为对象属性的名字 而非数组index a[ -1.23 ] = true; 创建了一个attrbute 名为"-1.23"
3.添加数组新元素
JavaScript数组中可以具有任意个数的element 可以在任何时刻改变element个数
添加新元素 只需赋值:a[10] = 10;
JavaScript数组是稀疏的 index不一定要落在连续范围内 只有真正存储在数组中的element才能分配到内存
a[0] = 1;
a[1000] = "Tianjin University"; 只有index为0及1000的element才可分配到内存 其他999个未分配
Array element也可以添加到Object中:
var c = new Circle(1,2,3);
c[0] = "This is an array element of an object";
定义了名为"0"的Object对象属性 只将Array Element添加到Object中不会使其成为Array
由Array() || 由Array直接量创建的Array具有一些Object没有的特性
4.Array的Length:自动更新
var a = new Array(); // a.length = 0 ==>未定义Array element
var a = new Array(10); // a.length = 10 ==>将0-9的Element定义为空元素
var a = new Array(1,2,3); // a.length = 3 ==>定义0-2的element
var a = [4,5]; // a.length = 2 ==>定义element0, element1
a[5] = "Tianjin University"; //a.length = 6 ==> 定义element0, element1, element5
a[49] = 0; //a.length = 50 ==> 定义element0, element1, element5, element50
length常用来遍历array element
var university = ["Tianjin unversity", "Tianjin", "1895/10/02"];
for( i=0; i<= university.length; i++ )
{
if (university[i] != undefined) //若Array是连续的, 且是从element0开始
{
alert(university[i]);
}
}
Array的length既可以读也可以写
若给length设置了一个比它当前值小的值 array将会被截断
此长度之外的元素均会被抛弃 它们的值也就丢失了
若给length设置了一个比它当前值大的值 则新的 未定义的元素就会被添加到数组末尾 以使其增长到指定length
通过设置Array length的Attrbute来截断数组是惟一一种缩短数组长度的方法
若用delete来删除Array中的element 虽然那个元素变成未定义的 但数组的length不会改变
5.多维数组
JavaScript不支持真正的多维数组 但可以使用element为array的array
matrix是一个element为array的array 其每个element matrix[x]均是一个array
要取此array中的一个值 就要写成matrix[x][y]
数组的(length attrbute)&&(array class定义的各种methods)是数组区别于对象的重要特性