3.12 数组
到目前为止,一个变量只装一个值。但现实里我们经常要处理“一堆”数据:一个班的所有学生、购物车里的所有商品、一周七天。数组(array) 就是用来装“一串有序的值”的。
下面的实验让你给数组增删元素,再看 map 和 filter 怎么“批量加工”。
正在加载交互实验...
创建与访问
用方括号 [] 创建数组,元素之间用逗号隔开:
js
const fruits = ["苹果", "香蕉", "橙子"];用下标(index)访问某个元素,关键点:下标从 0 开始数!
js
fruits[0] // "苹果"(第一个)
fruits[1] // "香蕉"(第二个)
fruits[2] // "橙子"(第三个)
fruits.length // 3(数组长度)正在加载概念检查...
增删元素
js
const list = [1, 2, 3];
list.push(4); // 末尾加一个 → [1, 2, 3, 4]
list.pop(); // 删掉最后一个 → [1, 2, 3]
list.unshift(0); // 开头加一个 → [0, 1, 2, 3]
list.shift(); // 删掉第一个 → [1, 2, 3]记忆:push/pop 管末尾,shift/unshift 管开头。
遍历数组
结合上一章的循环,可以逐个处理元素:
js
const scores = [80, 92, 75];
for (const s of scores) {
console.log(s); // 依次打印 80, 92, 75
}map 与 filter:数组的“超能力”
这是 JS 里极其常用、也极其优雅的两个方法。它们都返回一个新数组,不改原数组。
map:把每个元素“加工”一遍(长度不变):
js
const nums = [1, 2, 3];
const doubled = nums.map(x => x * 2); // [2, 4, 6]filter:按条件“筛选”元素(长度可能变短):
js
const nums = [1, 2, 3, 4, 5];
const big = nums.filter(x => x >= 3); // [3, 4, 5]它们的参数是一个函数(这里用了箭头函数)。map 会把数组里每个元素挨个传给这个函数,再把返回值收集成新数组;filter 则只保留让函数返回 true 的元素。
正在加载概念检查...
注意
别和 push/pop 搞混。 push、pop 会直接改原数组;而 map、filter 不改原数组,返回一个全新的数组。现代前端更偏爱后者这种“不改原数据”的风格,因为它更安全、更可预测。
正在加载本节练习...