六维教程

JavaScript 数组基本操作

之前学的变量一次只能存一个值。想存放一组数据,比如一周七天的温度,难道要写七个变量吗。JavaScript 提供了数组,用来存放一组有序的数据。

数组就是一个有序列表,列表里的每一条数据叫元素。本节介绍数组的创建、读取、修改和长度,都是最基础的用法。

创建数组

创建数组推荐用字面量写法,就是一对中括号。中括号里写元素,元素之间用逗号隔开。

const week = ['周一', '周二', '周三', '周四', '周五'];
const numbers = [1, 2, 3, 4, 5];
const empty = [];

第一个数组存放五个字符串,第二个存放五个数字,第三个是空数组,后面可以随时往里添加元素。

创建数组不用 new Array()。这种写法容易和其他构造语法混淆,团队里一般约定只用字面量。

读取元素

数组的元素按顺序排列,每个元素有一个编号,叫索引。索引从 0 开始,第一个元素的索引是 0,第二个是 1,依此类推。

数组名[索引] 就能读取对应位置的元素。

const fruits = ['苹果', '香蕉', '橙子'];
console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[2]);

运行结果依次输出 苹果、香蕉、橙子,每行一个。索引是多少,读到的就是第 索引加一 个元素。

修改元素

修改某个位置的元素,直接给 数组名[索引] 赋新值就行。

const fruits = ['苹果', '香蕉', '橙子'];
fruits[1] = '西瓜';
console.log(fruits);

运行后数组变成 ['苹果', '西瓜', '橙子']。注意这里改的是数组内部的元素,不是给变量重新赋值,所以 fruits 用 const 声明没有问题。

length 属性

每个数组都有 length 属性,表示元素的个数。

const fruits = ['苹果', '香蕉', '橙子'];
console.log(fruits.length);

运行结果输出 3。由于索引从 0 开始,最后一个元素的索引是 length - 1,也就是 fruits[fruits.length - 1]

console.log(fruits[fruits.length - 1]);

这样写总能拿到最后一个元素,数组内容变化时也照样适用。

数组可以混合类型

JavaScript 的数组比较宽松,允许把不同类型的数据放在一起。

const mixed = [1, 'a', true];

这种写法语法上没问题,能正常创建。但实际项目里不推荐,团队项目一般保持数组内类型一致,比如全放数字,或者全放字符串。类型一致以后,遍历和统计都方便,不容易出 bug。

越界赋值会扩展数组

给超出当前长度的索引赋值,数组会自动变长,中间空出来的位置值是 undefined。

const arr = ['a', 'b'];
arr[3] = 'd';
console.log(arr.length);
console.log(arr[2]);

第一行输出 4,数组变成 ['a', 'b', undefined, 'd']。第二行输出 undefined。这种写法不常用,知道有这回事就行。

小结

数组是一组有序数据,用中括号字面量创建。索引从 0 开始,用 数组名[索引] 读取和修改元素。length 属性表示元素个数,最后一个元素的索引是 length - 1。数组可以混合类型但不推荐。给超出长度的索引赋值会扩展数组。数组的高阶方法 map、filter、reduce 功能更强,会在 ES6 教程中讲解。

上一篇
JavaScript 闭包入门
下一篇
JavaScript 数组增删改