网站
引入
前面学的变量只能保存一个值。如果需要保存一组数据,比如班级里所有同学的名字、购物车里所有商品,就需要用到数组。
数组可以把多个数据有序地放在一起,通过索引来访问每一个元素。
正文
定义
定义
数组是一种有序的数据集合,可以保存多个值,每个值通过索引(从 0 开始)来访问。
创建数组
数组字面量
最常用的方式,用 [] 创建。
let fruits = ["苹果", "香蕉", "橘子"];
let numbers = [1, 2, 3, 4, 5];
let mixed = [1, "hello", true, null];数组里的元素可以是任意类型,也可以混合不同类型。
new Array()
也可以用构造函数创建。
let list = new Array(1, 2, 3);
console.log(list);如果只传一个数字参数,会创建指定长度的空数组。
let empty = new Array(5);
console.log(empty.length);通常推荐用数组字面量,更直观。
索引
数组里每个元素都有一个编号,叫索引,从 0 开始。
let fruits = ["苹果", "香蕉", "橘子"];
console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[2]);通过索引也可以修改元素。
fruits[1] = "西瓜";
console.log(fruits);访问不存在的索引会返回 undefined。
console.log(fruits[10]);length 属性
length 返回数组的元素个数。
let fruits = ["苹果", "香蕉", "橘子"];
console.log(fruits.length);length 也可以用来判断数组是否为空。
let list = [];
console.log(list.length === 0);最后一个元素的索引是 length - 1。
let fruits = ["苹果", "香蕉", "橘子"];
console.log(fruits[fruits.length - 1]);遍历数组
for 循环
let fruits = ["苹果", "香蕉", "橘子"];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}for…of
for…of 可以直接拿到每个元素,不需要用索引。
let fruits = ["苹果", "香蕉", "橘子"];
for (let fruit of fruits) {
console.log(fruit);
}forEach()
forEach() 是数组的方法,接收一个回调函数。
let fruits = ["苹果", "香蕉", "橘子"];
fruits.forEach(function (fruit) {
console.log(fruit);
});也可以用箭头函数简写。
fruits.forEach(fruit => {
console.log(fruit);
});forEach() 的回调还可以接收第二个参数 index。
fruits.forEach((fruit, index) => {
console.log(index + ": " + fruit);
});多维数组
数组里的元素也可以是数组,这就是多维数组。
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(matrix[0]);
console.log(matrix[1][2]);matrix[1][2] 先取到第二行 [4, 5, 6],再取第三个元素 6。
判断是否为数组
let list = [1, 2, 3];
console.log(Array.isArray(list));
console.log(Array.isArray("hello"));typeof 对数组返回 "object",不能区分数组和普通对象,要用 Array.isArray()。
常见写法
| 写法 | 作用 |
|---|---|
let arr = []; | 创建空数组 |
let arr = [1, 2, 3]; | 创建数组并赋值 |
arr[0] | 访问第一个元素 |
arr[0] = 10; | 修改第一个元素 |
arr.length | 获取数组长度 |
for (let item of arr) {} | 遍历数组元素 |
arr.forEach(fn) | 遍历数组(回调方式) |
Array.isArray(arr) | 判断是否为数组 |
特点
- 数组用
[]创建,元素用,分隔 - 索引从
0开始 length返回元素个数- 数组可以保存不同类型的值
for、for…of、forEach()都可以遍历数组Array.isArray()用来判断一个值是否为数组
理解
可以把数组理解为一排有编号的柜子。
每个柜子有一个编号(索引),从 0 开始。柜子里可以放任何东西,数字、文字、甚至其他数组都行。
要知道有多少个柜子,看 length。要拿某个柜子里的东西,用编号去找。
数组的重点不在于创建,而在于对它做增删改查的操作。
引出
理解了数组的基础之后,可以继续学习 JS 数组方法,掌握数组的增删改查、查找、排序等操作。
数组的遍历和 JS 循环 也有密切关系。