《JavaScript面向对象编程指南》——2.5 数组

2.5 数组

现在,我们对JavaScript中的基本数据类型已经有了一定的了解,是时候将注意力转向更有趣的数据结构——数组了。

我们可以用一对不带任何内容的方括号来声明一个空数组变量,例如:

>>> var a = [];
>>> typeof a;
"object"

如您所见,typeof在这里返回的是“object”。建议您先别管这个,待我们重点讨论对象时再回头来说明这个问题。

如果我们要定义一个带三个元素的数组,可以这样做:

>>> var a = [1,2,3];

只要在控制台中简单地输入数组名,就能打印出该数组中的所有内容:

>>> a
[1, 2, 3]

那么,究竟什么是数组呢?简而言之,它就是一个用于存储数据的列表。与一次只能存储一个数据值的变量不同,我们可以用数组来存储任意数量的元素值。现在的问题是,我们应该如何访问数组中的各个数据值呢?

通常,元素在数组中的索引位置是从0开始编号的。也就是说,数组首元素的索引值(或者说位置值)应该是0,第二个元素的索引值则是1,以此类推。表2-5中所显示的就是之前那个三元素数组实例中的具体情况。

为了访问特定的数组元素,我们需要用一对方括号来指定元素的索引值。因此a[0]所访问的就是数组a的首元素,而a[1]则代表第二个元素,以此类推。

>>> a[0]
1
>>> a[1]
2

2.5.1 增加、更新数组元素
我们可以通过索引来更新数组中的元素。例如在下面的代码中,我们更新了第三个元素(索引值为2)的值,并将更新后的数组打印出来:

>>> a[2] = 'three';
"three"
>>> a
[1, 2, "three"]

另外,我们也可以通过索引一个之前不存在的位置,来为其添加更多的数组元素。

>>> a[3] = 'four';
"four"
>>> a
[1, 2, "three", "four"]

如果新元素被添加的位置与原数组末端之间存在一定的间隔,那么这之间的元素将会被自动设定为undefined值。例如:

>>> var a = [1,2,3];
>>> a[6] = 'new';
"new"
>>> a
[1, 2, 3, undefined, undefined, undefined, "new"]

2.5.2 删除元素
为了删除特定的元素,我们需要用到delete操作符。该操作符虽然不能真正移除一个元素,但它能将其设定为undefined。元素被删除后,数组的长度并不会受到影响。

>>> var a = [1, 2, 3];
>>> delete a[1];
true
>>> a
[1, undefined, 3]

2.5.3 数组的数组
通常情况下,我们可以在数组中存放任何类型的值,包括另一个数组。

>>> var a = [1, "two", false, null, undefined];
>>> a
[1, "two", false, null, undefined]
>>> a[5] = [1,2,3]
[1, 2, 3]
>>> a
[1, "two", false, null, undefined, [1, 2, 3]]

让我们来看一个例子,在下面的代码中,我们定义了一个含有两个数组的数组:

>>> var a = [[1,2,3],[4,5,6]];
>>> a
[[1, 2, 3], [4, 5, 6]]

在该数组中,首元素a[0]本身也是一个数组。

>>> a[0]
[1, 2, 3]

如果想要访问内层数组中的特定元素,我们需要再加一组方括号。例如:

>>> a[0][0]
1
>>> a[1][2]
6

另外值得注意的是,我们通过这种访问数组方式来获取某个字符串中的特定字符。例如:

>>> var s = 'one';
>>> s[0]
"o"
>>> s[1]
"n"
>>> s[2]
"e"

除此之外,数组的使用方法还有很多(我们将会在第4章中详细介绍),现在先到此为止,请记住以下内容。

数组是一种数据存储形式。
数组元素是可以被索引的。
数组中的元素索引是从0开始的,并且按照每个元素的位置依次递增。
我们是通过方括号中的索引值来访问数组元素的。
数组能存储任何类型的数据,包括另一个数组。

时间: 2024-07-28 13:03:34

《JavaScript面向对象编程指南》——2.5 数组的相关文章

《JavaScript面向对象编程指南》——1.6 OOP概述

1.6 OOP概述 JavaScript面向对象编程指南 如果您在面向对象程序设计方面是一个新手,或者您不能确定自己是否真的理解了上面这些概念,请不必太担心.以后我们还会通过一些代码来为您具体分析它们.尽管这些概念说起来好像很复杂.很高级,但一旦进入真正的实践,事情往往就要简单得多. 话虽如此,但还是先让我们再来复习一下这些概念吧(见表1-1).

《JavaScript面向对象编程指南(第2版)》——导读

**前言**本书是<JavaScript面向对象编程指南>的第二版.前一版由Stoyan Stefanov著(Packet出版社发行),在业界广受好评.然而,自第一版发行至今已过了五个年头.期间,JavaScript由一项主要适用于浏览器客户端的计算机技术,逐渐发展成为一种多功能的程序设计语言,甚至连服务端也能由它来编写.所以在这一版中,我们继续带领大家学习JavaScript的"语言部分",即其重心依然会放在JavaScript语言本身(独立于运行环境部分),着重讨论EC

《JavaScript面向对象编程指南》——导读

前言 这本书旨在介绍JavaScript语言,这是一种具有高度表达能力的.基于原型特性的.非常灵活的面向对象程序设计语言.只要我们摒弃之前设计师所做的那种类似翻滚按钮的玩具思路,这种有趣的.独特的语言就会重新焕发活力,并且远胜往昔,今天的Web 2.0世界中的AJAX.胖客户端程序设计.丰富的仿桌面型网络应用程序.缩放式地图以及基于Web的邮件客户端基本上都依赖于JavaScript所带来的高交互性用户体验.如果说之前没有什么机会能让我们对JavaScript这种语言产生足够的关注,那么现在是时

《JavaScript面向对象编程指南》——第1章 引言1.1 回顾历史

第1章 引言 众所周知,时下所流行的这些Web应用,例如Yahoo! Maps.Google Maps.Yahoo! Mail.My Yahoo!.Gmail.Digg以及YouTube等都有一些明显的共同特征,即:它们都是Web2.0时代的应用程序,都有非常丰富的人性化交互界面,而这往往意味着大量的JavaScript应用.事实上,JavaScript最初也只不过是一种内嵌于HTML语句中的单行式脚本语言.但如今已经今非昔比了,对于它今天所拥有的面向对象特性来说,无论是在可重用性方面,还是在可

《JavaScript面向对象编程指南》——第2章 基本数据类型、数组、循环及 条件表达式2.1 变量

第2章 基本数据类型.数组.循环及 条件表达式 在深入学习JavaScript的面向对象特性之前,我们首先要了解一些基础性知识.在这一章中,我们将会从以下几个方面入手. JavaScript中的基本数据类型,例如字符串和数字等. 数组. 常用操作符,例如+.-.delete.typeof等. 控制流语句,例如循环和if-else条件表达式等. 2.1 变量 通常,变量都是用来存储数据的.当我们编写程序时,用变量来表示实际数据显然要方便些.尤其是当我们需要多次使用某个数字(例如3.14159265

《JavaScript面向对象编程指南(第2版)》——第1章 面向对象的JavaScript 1.1 回顾历史

第1章 面向对象的JavaScript 自Web诞生以来,人们对于动态与响应式页面的需求便与日俱增.虽然静态的HTML文本页面在可读性方面或许会更好一些,特别是在有了CSS的辅助之后,页面排版显得更加美观了,但从另一方面来说,如果我们能让人们像在桌面上那样使用浏览器中的应用程序,事情或许会变得更有趣一些.如今,我们已能在浏览器中直接使用电子邮件.日历.电子银行.购物.绘画.游戏及文本编辑.这都要感谢一种Web编程语言-JavaScript,是它让这些Web应用成为了可能.然而,JavaScrip

《JavaScript面向对象编程指南》——2.8 本章小结

2.8 本章小结 在这一章中,我们学习了编写一个JavaScript程序所需要的基本组件.现在,您应该已经掌握了以下几种基本数据类型. . 数字 . 字符串 . 布尔值 . undefined . null 你也已经了解了一些基本的操作符. 算术运算符:+ .-.*./.%. 自增(减)运算符:++.--. 赋值运算符:=.+=.-=.*=./=.%=. 特殊操作符:typeof.delete. 逻辑运算符:&&.||.!. 比较运算符:==.===.!=.!==.<.>.&g

《JavaScript面向对象编程指南》——2.6 条件与循环

2.6 条件与循环 条件表达式是一种简单而强大的控制形式,它能够帮助我们控制一小段代码的执行走向.而循环则是一种可以让我们重复执行某段代码的操作.接下来,我们将会学习以下内容. if条件表达式. switch语句. while.do-while.for,以及for-in循环.2.6.1 代码块 首先,我们需要先了解一下什么是代码块,这在条件表达式和循环体中随处可见. 所谓的代码块,通常指的是被包括在0对或多对大括号中的那一段代码. { var a = 1; var b = 3; } 每个代码块中

《JavaScript面向对象编程指南(第2版)》——1.3 分析现状

1.3 分析现状 有意思的是,JavaScript必须运行于某种宿主环境中.Web浏览器仅仅是其中一种,JavaScript也完全可以运行在服务器端.桌面以及移动设备中.如今,我们已经可以用JavaScript来实现以下功能. 创建拥有强大而丰富功能的Web应用程序(这种应用程序往往运行在Web浏览器中).另外还有基于HTML5的许多特性,例如应用缓存.本地存储.本地数据库.无论是线上应用还是离线应用,Web应用都可以做得非常强大. 使用.NET和Node.js编写服务器端脚本,或者使用Rhin