第九章 9.1 数组和数组元素(Arrays and Array Elements)

Array 的元素可以是任何类型,各个元素的类型也可以互不相同。甚至可以是数组类型,这样就可以创建数组的数组。

9.1.1 数组的创建方法:

None.gif //  创建一个没有元素的数组
None.gif
var  a  =   new  Array();
None.gif
None.gif
//  创建一个数组的同时允许指定开始的 n 个元素
None.gif
var  a  =   new  Array( 5 4 3 2 1 " testing, testing " );
None.gif
None.gif
//  仅仅指定数组的长度,这个例子创建了 10 个 undefined 元素
None.gif
var  a  =   new  Array( 10 );

还可以通过数组字面值(array literals) 的形式创建数组:

None.gif var  primes  =  [ 2 3 4 7 11 ];
None.gif
var  a  =  ['a',  true 4.78 ];
None.gif
None.gif
//  array literal 中还可以包含 object literal 或者 array literal
None.gif
var  b  =  [[ 1 , {x: 1 , y: 2 }], [ 2 , {x: 3 , y: 4 }]];

访问或者设定数组的元素可以简单的用 数组名[索引] 语法。索引必须是正整数(232 - 1) 。如果用其他的类型,诸如 boolean, float 之类的,则 JavaScript 会把该值自动转换为 string. 然后用关联数组的语法来访问。所以下面的代码:

None.gif a[ - 1.23 =   true ;

实际上是设定了一个 name 为 "-1.23" 的属性而已。

9.1.2 读写数组元素

通过类似 a[3]  的语法即可读写,没什么可说的。

9.1.3 添加元素

JavaScript 的数组是可变大小的。可以随时用下列语法给某个元素赋值:

None.gif a[ 10 =   10 ;

Array 可以是稀疏的(sparse). 也就是说不一定要连续的指定值。JavaScript 解释器会自动的只给指定了值的那些元素分配内存。例如:

None.gif a[ 0 =   1 ;
None.gifa[
10000 =   " this is element 10,000 " ;

只会分配两个变量的内存给这个数组。

数组元素也可以指定给对象:

None.gif var  c  =   new  Circle( 1 , 2 , 3 );
None.gifc[
0 =   " this is an array element of an object! " ;

这段代码也仅仅是添加了一个叫做 "0" 的属性。而这个 Object 并不会变为 Array. 只有通过 Array constructor 创建的,或者 array literal 才可以使用 Array 的一些特殊功能。

9.1.4 数组的长度

数组有 length 属性。这个值为数组中最大的索引 + 1. 例子:

None.gif var  a  =   new  Array(  );    //  a.length == 0  (no elements defined)
None.gif
=   new  Array( 10 );      //  a.length == 10 (empty elements 0-9 defined)
None.gif
=   new  Array( 1 , 2 , 3 );   //  a.length == 3  (elements 0-2 defined)
None.gif
=  [ 4 5 ];             //  a.length == 2  (elements 0 and 1 defined)
None.gif
a[ 5 =   - 1 ;              //  a.length == 6  (elements 0, 1, and 5 defined)
None.gif
a[ 49 =   0 ;              //  a.length == 50 (elements 0, 1, 5, and 49 defined) 

length 属性最大的用处就是用于循环访问数组:

None.gif var  fruits  =  [ " mango " " banana " " cherry " " pear " ];
None.gif
for ( var  i  =   0 ; i  <  fruits.length; i ++ )
None.gif    alert(fruits[i]);

上面的例子假定了所有的元素都是连续的。如果不是这样,我们可以在访问元素前先测试它是否已经定义:

None.gif for ( var  i  =   0 ; i  <  fruits.length; i ++ )
None.gif    
if  (fruits[i]  !=  undefined) alert(fruits[i]);

length 属性是可以读写的。如果你设定为一个比当前元素索引小的,则后面的元素会自动被丢弃。反之,设定的很大的话,则会自动在后面填充 undefined 元素。
设定 length 为一个较小的值,是唯一缩短一个数组的方法。如果你用 delete 操作符,则只能把某个元素设定为 undefined. 而 length 不会变化。

9.1.5 多维数组(Multidimentional Arrays)

JavaScript 不支持多维数组。但你可以很好的通过数组的数组(arrays of arrays) 来做到类似的效果。比如:

None.gif matrix[x][y]



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值