21-数组
3.14 数组
数组是JavaScript的一种特殊类型的对象。不像一般的对象,数组的内容天生具有自然排序特性(元素0始终出现在元素1之前),它的键是数字,并且是有序的。数组有很多有用的方法,因而具有强大的传递信息的能力,将在第8章学习数组。
如果读者是从其他编程语言转过来的,会发现JavaScript数组是集其他语言优点于一身的混合体,它拥有C语言数组的高效索引,同时拥有强大的动态数组和链表的特性。JavaScript中的数组有以下特性:
- 数组长度不固定,可以随时添加和删除元素。
- 数组中元素的类型是多样的,每个元素都可以是任意类型。
- 数组下标从0开始。也就是说,数组的第一个元素是元素0。
由于数组是具有一些额外功能的特殊对象,所以可以给数组指定非数字(部分或全部)的键。虽然可以这么做,但它违背了数组的设计初衷,会造成混乱,并且增加了定位bug的难度,所以请尽量避免这样做。
JavaScript中用方括号创建数组字面量,多个元素之间用逗号隔开:
const a1 = [1, 2, 3, 4]; // 包含数值的数组
const a2 = [1, 'two', 3, null]; // 包含混合类型的数组
const a3 = [ // 跨越多行的数组
"What the hammer? What the chain?",
"In what furnace was thy brain?",
"What the anvil? What dread grasp",
"Dare its deadly terrors clasp?",
];
const a4 = [ // 包含对象的数组
{ name: "Ruby", hardness: 9 },
{ name: "Diamond", hardness: 10 },
{ name: "Topaz", hardness: 8 },
];
const a5 = [ // 包含数组的数组
[1, 3, 5],
[2, 4, 6],
];
数组有一个属性叫length,它返回数组元素的个数:
const arr = ['a', 'b', 'c'];
arr.length; // 3
在方括号中使用数字下标可以访问数组的指定元素(类似于访问对象的属性):
const arr = ['a', 'b', 'c'];
// 获取第一个元素:
arr[0]; // 'a'
// 数组最后一个元素的下标是arr.length-1:
arr[arr.length - 1]; // 'c'
如果要改变数组中特定下标的元素的值,只要给它赋一个新值就可以了:[5]
const arr = [1, 2, 'c', 4, 5];
arr[2] = 3; // arr 的值为[1, 2, 3, 4, 5]
在第8章中会学习更多修改数组及其内容的技巧。
由于数组是具有一些额外功能的特殊对象,所以可以给数组指定非数字(部分或全部)的键。虽然可以这么做,但它违背了数组的设计初衷,会造成混乱,并且增加了定位bug的难度,所以请尽量避免这样做。