JS学习之Array类型(一)

ECMAScript数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象,以此类推。而且,ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
创建数组的基本方式有两种。第一种是使用Array构造函数,如下面的代码所示。

var colors=new Array();

如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量.而该数量会自动变成length属性的值.例如,下面的代码将创建length值为20的数组。

var color=new Arrary(20);

也可以向Array构造函数传递数组中应该包含的项。以下代码创建了一个包含3个字符串值的数组:、

var  color=new Array("red","orange","teal");

如果传递的是数值,则会按照该数值创建包含给定项数的数组,如果给构造函数传递的是其他类型的参数,则会创建包含那个值的只有一项的数组。

var color=new  Array(3);   //创建一个包含3项的数组
   var names=new Array("greg");     //创建一个包含1项,即字符串“greg”的数组

在使用Array构造函数时也可以省略new操作符。
创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下所示:

var colors=["red","blue","teal"];     //创建一个包含3个字符串的数组
var name=[];       //创建一个空数组
var value=[1,2,];   //不要这样,这样会创建一个包含2或3项的数组

在读取和设置数组的值时,要使用方括号并提供相应值的基于0的数字索引,如下所示:

var colors=["red","blue","teal"];   //定义一个字符串数组
console.log(colors[0]);   //打印第一项
colors[2]="black";        //修改第三项
colors[3]="brown";        //新增第四项

方括号中的索引表示要访问的值。如果索引小于数组中的项数,则返回对应项的值,就像这个例子中的color[0]会显示“red”一样。设置数组的值也使用相同的语法,但会替换指定位置的值。如果设置某个值达的索引超过了数组现有项数,如这个例子中的color[3]所示,数组就会自动增加到该索引值加1的长度
数组的项数保存在器length属性中,这个属性始终会返回0或者更大的值,如下面这个例子所示:

var colors=["red","blue","green"];       //创建一个包含3个字符串的数组
console.log(colors.length);      //3

数组的length属性很有特点—-它不是只读的。因此,通过设置这个属性,可以从数组的末尾移除项或项数组添加新项,请看下面的例子:

var colors=["red","blue","green"];     
colors.length=2;
console.log(colors[2]);    //undefined

这个例子中的数组colors一开始有3个值。将其length属性设置为2会移除最后一项,结果在访问colors[2]就会显示undefined了。如果将其length属性设置为大于数组项数的值,则新增的每一项都会取得undefined值,如下显示

var colors=["red","blue","green"]; 
colors.length=4;
console.log(colors[3]);    //undefined

在此,虽然colors数组包含3个项,但把它的length属性设置成了4。这个数组不存在位置3,所以访问这个位置的值就得到了特殊值undefined。
利用length属性也可以方便地在数组末尾添加新项,如下所示

var colors=["red","blue","green"]; 
colors[colors.length]="black";    //在位置3添加一种颜色
colros[colors.length]="teal";     //在位置4添加一种颜色

由于数组最后一项的索引始终是length-1,因此下一个新项的位置就是length.每当在数组末尾添加一项时,其length属性都会自动更新以反应这一变化。换句话说,上面例子第二行中的colors[colors.length]为位置3添加了一个值,最后一行的colors[colors.length]则为位置4添加了一个值。当把一个值放在超出当前数组大小的位置上时,数组就会重新计算其长度值,即长度值等于最后一项的索引加1。

声明:本文摘自JAVAScript高级程序设计(第3版)第五章。请购买正版学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值