← 返回目录

1. 数组概念与创建

数组就是一排带编号的小箱子,一个变量存多个值,编号从 0 开始。

核心三步:
创建——let arr = [1,2,3] 或 new Array()
取值——arr[0] 拿第一个
改值——arr[0] = 10 改第一个

坑:下标从 0 不是 1、arr.length 拿长度、越界取值得 undefined 不报错

今天学四件事:怎么摆货架按编号取东西、货架有多长(length),以及一个新手必踩的坑——new Array(5) 货架是空的,并没有放东西 5 进去

1.1 互动演示(两种创建方式 / new Array(5) 坑 / 下标越界 / length)

点按钮体验:对比两种创建方式、亲眼看到 new Array(5) 的长度坑、越界返回 undefined

1.2 知识点逐条讲解(配合代码)

① 数组是什么?为什么要用数组?

想象你要记 50 个同学的名字。不用数组,你得写 name1、name2……五十个单独的小盒子,找一个翻半天。数组就是一整排带编号的小格子:把相关的一堆东西,装进同一个变量,靠编号(术语叫「下标」)按位置找。

「下标」第一次出现,记住它:下标 = 格子的编号。「元素」也记一下:元素 = 格子里放的那个东西。一个数组能装什么都能装:数字、文字、真假、甚至另一排格子。

// 不用数组:5 个独立小盒子,名字各起各的,乱
// 小盒子1,装张三
let n1 = "张三";

// 小盒子2,装李四
let n2 = "李四";

// 小盒子3,装王五
let n3 = "王五";

// 用数组:一整排编号格子,一个变量装下所有人
// 格子0 格子1 格子2
let userList = ["张三", "李四", "王五"];

// 报编号0 → 取第1个格子 → "张三"
console.log(userList[0]);

// 报编号1 → 取第2个格子 → "李四"
console.log(userList[1]);

// 报编号2 → 取第3个格子 → "王五"
console.log(userList[2]);

// 一个格子里可以混着装:文字、数字、真假都行
// 名字、价格、是不是包邮,全塞一起
let goods = ["手机", 2999, true];

② 两种摆货架的方式:new Array 和 [] 中括号

摆货架有两种写法。日常开发 99% 用第二种 [] 中括号,又短又清楚。第一种 new Array 知道有这么个东西就行,几乎不用。

// 写法1:new Array(知道即可,实际很少用)
// 空货架,啥也没放
let arr1 = new Array();

// 一上来就摆好三个东西
let arr2 = new Array(10, 20, "张三");

// 写法2:中括号 [](推荐!日常都这么写)
// 空货架
let arr3 = [];

// 直接摆好三个东西
let arr4 = [10, 20, 30];

③ 大坑:new Array(5) 并没有放进一个「5」

如果你写 new Array(5),以为货架里放了一个东西叫 5,就会踩坑。因为「只塞一个数字」时,JS 把这个数字当成了货架的格子数量,而不是要放进去的东西。结果就是:货架有 5 个空格子,里面啥也没有。而中括号 [5] 才是真的放了一个东西叫 5。这就是为什么推荐用 []——不会搞混。点下面按钮对比看看。

④ 编号从 0 开始,取空编号不会报错,只会给 undefined

注意!货架编号从 0 开始,不是从 1。3 个东西编号是 0、1、2。如果你伸手去摸一个不存在的编号(比如第 5 号),JS 不会「叮」地报错提醒你,而是默默塞给你一个 undefined(空)

如果你以为取错编号会报错,就会被坑。因为 JS 不报错,悄悄给你一个 undefined,后面代码还傻乎乎往下跑,bug 藏得很深。所以越界取不到东西,拿到的就是 undefined

// 摆好:编号0=10, 编号1=20, 编号2=30
let arr = [10, 20, 30];

// 取编号0 → 10
console.log(arr[0]);

// 摸编号5,没这格 → 给 undefined(空)
console.log(arr[5]);

// 负数编号也不存在 → 还是 undefined
console.log(arr[-1]);

⑤ length:货架有多少个格子

每个货架都自带一个小标签 .length,上面写着「现在有几个格子/几个东西」。你往里加一个、抽走一个,标签会自动跟着变。这个标签后面「遍历」时要反复用。

// 一开始有3个
let arr = [10, 20, 30];

// 小标签写着 3
console.log(arr.length);

// 末尾再加一个 40
arr.push(40);

// 标签自动变成 4,不用你手动数
console.log(arr.length);

⑥ X.3 实战:用在哪 / 常见坑 / 怎么解决

① 用在哪:购物车商品列表、学生成绩表、待办事项、下拉选项,都是数组装一排同类型数据。

② 常见坑:写成 new Array(5) 以为放了元素 5;下标写 arr[arr.length] 取到 undefined 还往下算。

③ 怎么解决:一律用 [] 字面量创建;取之前先看 length,下标范围是 0 ~ length-1。

一句话记住:数组=带编号的格子,编号从 0 开始;摆货架用 [] 中括号;new Array(5) 是说「要 5 个空格子」不是「放个 5」;摸空编号不报错只给 undefined;length 自动数格子数

本页重点

API作用参数返回值代码示例
[]中括号字面量创建数组,日常都用它元素列表新数组
let nums = [10, 20, 30];
new Array()另一种创建数组写法,少用;传一个数字是指格子数元素或个数新数组
let arr = new Array(10, 20, 30);
arr[i]按编号(下标)取格子里的东西编号该元素,越界给 undefined
let first = nums[0];  // 10
arr.length数格子个数的小标签,自动更新元素个数
let n = nums.length;  // 3