← 返回目录

1. 数组概念与创建

先把数组想成超市货架:一整排小格子,每个格子都贴了编号。你把东西按编号放进去,要的时候报编号就能取出来。比如 5 个同学的名字,不用单独写 5 个箱子,全塞进这一排格子里就行。

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

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

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

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

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

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

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

// 不用数组:5 个独立小盒子,名字各起各的,乱
let n1 = "张三";            // 小盒子1,装张三
let n2 = "李四";            // 小盒子2,装李四
let n3 = "王五";            // 小盒子3,装王五

// 用数组:一整排编号格子,一个变量装下所有人
let userList = ["张三", "李四", "王五"];
//              格子0    格子1    格子2
console.log(userList[0]);  // 报编号0 → 取第1个格子 → "张三"
console.log(userList[1]);  // 报编号1 → 取第2个格子 → "李四"
console.log(userList[2]);  // 报编号2 → 取第3个格子 → "王五"

// 一个格子里可以混着装:文字、数字、真假都行
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

let arr = [10, 20, 30];   // 摆好:编号0=10, 编号1=20, 编号2=30
console.log(arr[0]);      // 取编号0 → 10
console.log(arr[5]);      // 摸编号5,没这格 → 给 undefined(空)
console.log(arr[-1]);     // 负数编号也不存在 → 还是 undefined

	

⑤ length:货架有多少个格子

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

let arr = [10, 20, 30];   // 一开始有3个
console.log(arr.length);  // 小标签写着 3
arr.push(40);             // 末尾再加一个 40
console.log(arr.length);  // 标签自动变成 4,不用你手动数

	

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

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

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

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

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