JavaScript数组

这篇博客介绍了JavaScript中的数组概念,包括如何声明、填充和访问数组元素。数组可以包含各种数据类型,如字符串、数值和布尔值,甚至其他数组。文章特别强调了数组下标从0开始的重要性,并引入了关联数组的概念,允许通过字符串下标来提高代码的可读性。关联数组的使用使得元素可以通过有意义的名字而非数字下标进行引用,增强了代码的可维护性。

字符串、数值和布尔值都属于离散值(scalar)。如果某个变量是离散的,它在任意时刻就只能有一个值。如果想用一个变量来存储一组值,就需要使用数组(array)。

数组是由名字相同的多个值构成的一个集合,集合中的每个值都是这个数组的元素(element)。例如,我们可以用名为beatles的变量来保存Beatles乐队全体四位成员的姓名。

JavaScriptd脚本中,数组要用关键字Array来声明。在声明数组的同时,程序员还可以对这个数组的元素个数,也就是这个数组的长度(length),做出规定:

var beatles=Array(4);

有时,我们无法提前预知某个数组最终会容纳多少个元素。这没有关系,JavaScript 并不要求在声明数组时必须给出它的元素个数,我们完全可以在声明数组时不给出明确具体的元素个数:

var beatles-Array();

向数组中添加元素的操作称为填充(populating)。在填充数组时,不仅需要给出新元素的值,还需要在数组中为新元素指定存放位置,这个位置要通过下标(index)给出。数组里的每个元素都有一个相应的下标。在语句中,下标值必须放在方括号内,如下所示:

array[index]=element;

现在来填充刚才声明的beatles 数组。我们将按照人们在提到Beatles 乐队成员时的传统顺序(即JohnPaulGeorgeRingo)进行。首先是第一个下标和元素:

beatles[0] ="John";

0而不是1作为第一个下标值多少会让人感到有些不习惯,但JavaScript语言就是这么规定的,所以我们这里只能这么做。这一点很重要,但也很容易被忘记,初出茅庐的程序员在刚接触JavaScript数组时经常在这个问题上犯错误。

下面是声明和填充beatles数组的全过程:

var beatles-Array(4);

beatles[0]="John";

beatles[1]="Paul";

beatles[2]="George";

beatles[3] ="Ringo";

有了上面这些代码,我们即可在脚本中通过下标值“2”beatles2])来检索取值为“George”的元素了。请注意,beatles 数组的长度是4,但它最后一个元素的下标却是3.因为数组下标是从0开始计数的,你们或许需要一些时间才能习惯这一事实。

像上面这样填充数组未免有些麻烦。这里有一种相对简单的方式:在声明数组的同时对它进行填充。这么做时别忘了用逗号把各个元素分隔开:

var beatles=Array("John","Paul","George","Ringo");

上面这条语句会为beatles数组中的每个元素自动分配一个下标:第一个下标是0,第二个是1,依此类推。因此,beatles2]仍将对应于取值为“George”的元素。

我们甚至用不着明确地表明我们是在创建数组。事实上,只需用一对方括号把各个元素的初始值括起来就足以创建出我们想要的数组了:

var beatles=["John","Paul","George","Ringo"];

不过,在声明或填充数组时写出Array关键字是一个良好的编程习惯,这可以提高JavaScript脚本的可读性,并让我们一眼就看出哪些变量是数组。

数组元素不必非得是字符串。可以把一些布尔值存入一个数组,还可以把一组数值存入一个数组:

var years-Array(1940,1941,1942,1943);

甚至可以把这三种数据类型混在一起存入一个数组:

var lennon=Array("John",1940,false);

数组元素还可以是变量:

var name="John";

beatles[0]=name;

这将把beatles数组的第一个元素赋值为“John”。

数组元素的值还可以是另一个数组的元素。下面两条语句将把beatles数组的第二个元素赋值为“Paul”:

var names ·Array("Ringo","John","George","Paul"); beatles[1]=names[3];

事实上,数组还可以包含其他的数组!数组中的任何一个元素都可以把一个数组作为它的值:

var lennon-Array("John",1940,false);

var beatles=Array(); beatles[0]=lennon;

现在,beatles数组的第一个元素的值是另外一个数组。要想获得那个数组里的某个元素的值,我们需要使用更多的方括号。beatles0][0]的值是“John”,beatles0][1]的值是1940beatles0][2]的值是false

这是一种功能相当强大的存储和获取信息的方式,但如果我们不得不记住每个下标数字的话,编程工作将是一种非常痛苦和麻烦的体验。还好,有一种办法可以让我们以更可读的方式去填充数组。

关联数组

beatles 数组是数值数组的一个典型例子:每个元素的下标是一个数字,每增加一个元素,这个数字就依次增加1。第一个元素的下标是0,第二个元素的下标是1,依此类推。

如果在填充数组时只给出了元素的值,这个数组就将是一个数值数组,它的各个元素的下标将被自动创建和刷新。

我们可以通过在填充数组时为每个新元素明确地给出下标的方式来改变这种默认的行为。在为新元素给出下标时,不必局限于整数数字。数组下标可以是字符串:

var lennon-Array(); lennon["name"]="John";

lennon["year"]-1940; lennon["living"]=false;

这称为关联数组(associative array)。从某种意义上讲,完全可以把所有的数组都看作是关联数组。尽管数值数组的下标是由系统自动创建的一些数字,但每个下标仍关联着一个特定的值。因此,数值数组完全可以被当作关联数组的一种特例来对待。

用关联数组来代替数值数组的做法意味着,我们可以通过各元素的名字而不是一个下标数字来引用它们。这可以大大提高脚本的可读性。

下面,我们将创建一个新的beatles数组,并用刚才创建的lennon数组来填充它的第一个元素。别忘了,数组的元素可以是另一个数组:

var beatles = Array(); beatles [o] = lennon;

现在,可以通过一些有意义的名字去访问所需要的某个元素了. beatles[0][name]的值是“John", beatles[0]["year"]的值是1940, beatles[0] "1iving"]的值是false.

在此基础上,还可以做进一步的改进:把beatles数组也填充为关联数组而不是数值数组。这样一来,我们就可以用“drummer”或“bassist”等更有意义且更容易记忆的字符串值,而不是一些枯燥乏味的整数作为下标去访问这个数组里的元素了:

var beatles = Array(); beatles["vocalist"]=lennon;

现在, beatles ["vocal ist "]["name"]的值是"John", beatles["vocalist"]["year"]的值 1940 beatles[vocal ist][1iving]的值是false.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值