数组(array)用于保存一组有顺序的数据。JavaScript 数组可以混合类型,不过把相关、同类的数据放在一起通常更容易理解。数组还能通过 push() 和 pop() 增加或删除末尾元素。
创建数组
已知元素时可以使用方括号创建数组;Array(n).fill(0) 会创建 n 个槽位,并把每个槽位填成零。
let scores = [88, 91, 76, 95, 83];
let counts = Array(4).fill(0);
counts[0] = 12;
counts[1] = 9;Array(4).fill(0) 中的四个零来自显式调用的 fill(0);只写 Array(4) 会得到四个空槽位。
知识测验
题目
Array(4).fill(0) 创建后,四个元素的初始值是什么?
访问数组元素
数组下标(index)从 0 开始,所以第一个元素是 scores[0]。长度为 5 的数组,已有元素的下标是 0 到 4;读取 scores[5] 会得到 undefined,但不会自动添加新元素。
let scores = [88, 91, 76, 95, 83];
console.log(scores[0]); // 88
console.log(scores[4]); // 83
scores[2] = 80;
console.log(scores[2]); // 80互动实验
数组索引探照灯
访问权限免费
点击任意格子,让 JavaScript 表达式准确指向一个元素。观察合法下标始终是 0 到 scores.length - 1。
知识测验
题目
let scores = [88, 91, 76]; 时,scores[2] 是多少?
数组长度与循环
数组使用属性 length,没有括号。最后一个已有元素的下标是 array.length - 1。需要位置时使用下标循环;只读取每个值时,可以使用 for...of。
for (let i = 0; i < scores.length; i++) {
console.log(`scores[${i}] = ${scores[i]}`);
}
for (const score of scores) {
console.log(score);
}知识测验
题目
遍历整个数组时,哪个条件不会越界?
常用操作
可以改写元素、通过循环搜索、用 push() 追加元素,也可以用 pop() 删除末尾元素。
let values = [4, 0, 7, 0, 2, 9];
values[2] = 5;
for (const value of values) {
console.log(value + " ");
}知识测验
题目
关于 JavaScript 数组,哪一句正确?
动手练习
把数组中的 0 移到末尾
- 使用 read 下标扫描每个元素。
- 使用 write 下标记录下一个非零元素应写入的位置。
- 扫描结束后,将 write 到数组末尾的格子全部补为 0。
动手练习
原地反转整数数组
使用两个下标 left 和 right,从数组两端向中间移动并交换元素。输入 {2, 4, 6, 8, 10},输出 {10, 8, 6, 4, 2}。
- 设置 left 指向首元素、right 指向末元素。
- 交换两端元素后同时向中间移动。
- 当 left 不再小于 right 时停止,并输出数组。