# 掌握JS数据结构的底层逻辑:从内置类型到自定义实现

在JavaScript开发者的日常工作中,我们往往习惯了直接使用 `Array`、`Object` 和 `Map` 等内置数据结构,却很少深究其背后的设计原理与性能差异。本课程《JavaScript数据结构》旨在填补这一认知空白,帮助开发者从“会用”进阶到“懂原理”,从而写出更高效、更稳健的代码。

课程定位与目标受众

这是一门专为希望深入理解JS底层机制的开发者设计的体系课程。无论你是正在准备技术面试的初级工程师,还是希望优化性能瓶颈的中高级开发者,本课程都能为你提供系统的知识框架。课程不局限于语法速成,而是侧重于数据在内存中的组织方式、访问效率以及适用场景的深度解析。

核心内容拆解

课程开篇首先厘清了“什么是数据结构”这一基础概念,随后迅速切入JavaScript中最常用的三大内置结构:数组(Array)、集合(Set)和对象(Object)。讲师并未止步于API的罗列,而是通过对比教学,深入剖析了**数组与集合**、**对象与映射(Map)**之间的本质区别。例如,在讲解数组VS集合时,课程重点强调了去重性能与查找复杂度的差异;而在对象VS映射的对比中,则揭示了键类型限制(字符串vs任意类型)及插入顺序保留等关键特性,帮助学习者建立清晰的选型直觉。

此外,课程还涵盖了`WeakSet`与`WeakMap`等易被忽视的高级特性,解释了它们在防止内存泄漏方面的独特价值,这是构建长期稳定应用的重要知识点。

进阶:从零构建数据结构

如果说理解内置类型是“术”,那么第三章节的“自定义数据结构”则是“道”。课程挑战部分深入讲解了如何基于原生语法手动实现**链表(Linked List)**等经典数据结构。这一环节不仅回顾了指针(引用)的概念,更让学习者亲身体验节点连接、插入删除等操作在JS中的具体实现逻辑。这种底层复现的能力,是应对复杂业务场景和解决疑难Bug的基石。

学习价值与建议

通过这门课程,你将获得三方面的核心收益:一是建立严谨的数据结构思维,能在编码前根据数据特征选择最优容器;二是提升代码性能意识,理解不同操作的时间复杂度;三是增强底层调试能力,能够洞察引擎层面的行为。

建议学习者在学习过程中,不仅要观看视频,更要动手敲代码实现一遍链表等自定义结构。只有将理论转化为实践,才能真正内化这些知识,将其应用于实际项目的架构设计中。

课程目录

1-1 [JS数据结构——课程介绍] 课程介绍 (13:03)
2-1 [JS数据结构——入门(一)] 入门——什么是数据结构 (06:58)
2-2 [JS数据结构——入门(一)] 入门——JS数组 (15:44)
2-3 [JS数据结构——入门(一)] 入门——JS集合 (11:44)
2-4 [JS数据结构——入门(一)] 入门——数组VS集合 (02:39)
2-5 [JS数据结构——入门(一)] 入门——JS对象 (11:34)
2-6 [JS数据结构——入门(一)] 入门——JS映射 (16:56)
2-7 [JS数据结构——入门(一)] 入门——对象VS映射 (03:10)
2-8 [JS数据结构——入门(一)] 入门——弱集合&弱映射 (02:35)
3-1 [JS数据结构——入门(二)] 入门——自定义数据结构(链表) (03:46)
3-2 [JS数据结构——入门(二)] 入门——代码实现链表(append方法) (25:36)
3-3 [JS数据结构——入门(二)] 入门——代码实现链表(toArray方法) (11:58)
3-4 [JS数据结构——入门(二)] 入门——代码实现链表(prepend方法) (07:54)
3-5 [JS数据结构——入门(二)] 入门——代码实现链表(delete方法) (23:35)
3-6 [JS数据结构——入门(二)] 入门——代码实现链表(find&insertAfter) (15:01)
3-7 [JS数据结构——入门(二)] 入门——为什么使用链表 (10:41)
3-8 [JS数据结构——入门(二)] 入门——链表VS数组(时间复杂度) (14:51)
4-1 [JS数据结构——列表和表格(一)] 列表和表格——章节介绍 (01:19)
4-2 [JS数据结构——列表和表格(一)] 列表和表格——什么是列表和表格 (06:05)
4-3 [JS数据结构——列表和表格(一)] 列表和表格——js内置列表和表格 (06:50)
4-4 [JS数据结构——列表和表格(一)] 列表和表格——什么是堆栈 (09:33)
4-5 [JS数据结构——列表和表格(一)] 列表和表格——自定义堆栈(数组实现) (17:52)
4-6 [JS数据结构——列表和表格(一)] 列表和表格——自定义堆栈(链表分析) (06:02)
4-7 [JS数据结构——列表和表格(一)] 列表和表格——自定义堆栈(链表实现) (16:27)
4-8 [JS数据结构——列表和表格(一)] 列表和表格——堆栈VS数组(时间复杂度) (09:17)
5-1 [JS数据结构——列表和表格(二)] 列表和表格——什么是队列 (05:42)
5-2 [JS数据结构——列表和表格(二)] 列表和表格——自定义队列(数组实现) (09:27)
5-3 [JS数据结构——列表和表格(二)] 列表和表格——自定义队列(链表实现) (10:11)
5-4 [JS数据结构——列表和表格(二)] 列表和表格——队列VS数组(时间复杂度) (09:51)
6-1 [JS数据结构——列表和表格(三)] 列表和表格——什么是哈希表(散列表) (09:42)
6-2 [JS数据结构——列表和表格(三)] 列表和表格——为什么使用表格 (16:53)
6-3 [JS数据结构——列表和表格(三)] 列表和表格——自定义哈希表 (24:19)
6-4 [JS数据结构——列表和表格(三)] 列表和表格——哈希碰撞 (09:41)
6-5 [JS数据结构——列表和表格(三)] 列表和表格——解决办法(链地址法) (21:15)
6-6 [JS数据结构——列表和表格(三)] 列表和表格——解决办法(开放地址法) (25:21)
6-7 [JS数据结构——列表和表格(三)] 列表和表格——哈希表VS数组VS对象 (10:36)
6-8 [JS数据结构——列表和表格(三)] 列表和表格——本章小结 (08:15)
7-1 [JS数据结构——树形结构(一)] 树形结构——章节介绍 (02:37)
7-2 [JS数据结构——树形结构(一)] 树形结构——什么是树形结构 (08:52)
7-3 [JS数据结构——树形结构(一)] 树形结构——核心概念 (20:48)
7-4 [JS数据结构——树形结构(一)] 树形结构——举例说明(文件系统) (07:45)
7-5 [JS数据结构——树形结构(一)] 树形结构——代码实现基础树形结构 (30:55)
7-6 [JS数据结构——树形结构(一)] 树形结构——递归实现文件系统树 (37:56)
7-7 [JS数据结构——树形结构(一)] 树形结构——递归实现文件系统(删除结点) (16:50)
7-8 [JS数据结构——树形结构(一)] 树形结构——文件系统树的描述 (17:24)
7-9 [JS数据结构——树形结构(一)] 树形结构——树形结构VS数组(时间复杂度) (07:35)
7-10 [JS数据结构——树形结构(一)] 树形结构——遍历树形结构 (03:54)
8-1 [JS数据结构——树形结构(二)] 树形结构——深度优先搜索(DFS) (13:53)
8-2 [JS数据结构——树形结构(二)] 树形结构——广度优先搜索(BFS) (08:11)
8-3 [JS数据结构——树形结构(二)] 树形结构——深度优先VS广度优先 (05:43)
8-4 [JS数据结构——树形结构(二)] 树形结构——二叉搜索树(BST) (06:40)
8-5 [JS数据结构——树形结构(二)] 树形结构——代码实现二叉搜索树(添加) (12:36)
8-6 [JS数据结构——树形结构(二)] 树形结构——代码实现二叉搜索树(查找) (18:12)
8-7 [JS数据结构——树形结构(二)] 树形结构——二叉搜索树(删除叶子) (16:34)
8-8 [JS数据结构——树形结构(二)] 树形结构——二叉搜索树(只有一个子结点) (08:17)
8-9 [JS数据结构——树形结构(二)] 树形结构——二叉搜索树(有两个子结点) (32:07)
8-10 [JS数据结构——树形结构(二)] 树形结构——二叉搜索树VS数组 (06:29)
9-1 [JS数据结构——树形结构(三)] 树形结构——什么是AVL树 (07:35)
9-2 [JS数据结构——树形结构(三)] 树形结构——自平衡AVL树的旋转 (14:37)
9-3 [JS数据结构——树形结构(三)] 树形结构——平衡因子 (08:07)
9-4 [JS数据结构——树形结构(三)] 树形结构——获取深度&平衡因子访问属性 (17:46)
9-5 [JS数据结构——树形结构(三)] 树形结构——找到正确的旋转方法 (18:24)
9-6 [JS数据结构——树形结构(三)] 树形结构——单向左旋 (19:31)
9-7 [JS数据结构——树形结构(三)] 树形结构——单向右旋 (08:46)
9-8 [JS数据结构——树形结构(三)] 树形结构——先左后右旋转 (14:17)
9-9 [JS数据结构——树形结构(三)] 树形结构——先右后左旋转 (04:02)
9-10 [JS数据结构——树形结构(三)] 树形结构——AVL树代码测试 (05:00)
10-1 [JS数据结构——树形结构(四)] 树形结构——AVL&BST (02:20)
10-2 [JS数据结构——树形结构(四)] 树形结构——字典树 (10:20)
10-3 [JS数据结构——树形结构(四)] 树形结构——代码字典树(插入) (37:56)
10-4 [JS数据结构——树形结构(四)] 树形结构——代码实现字典树(查找) (05:07)
10-5 [JS数据结构——树形结构(四)] 树形结构——代码实现字典树(删除) (08:33)
10-6 [JS数据结构——树形结构(四)] 树形结构——字典树VS哈希表(时间复杂度) (07:18)
11-1 [JS数据结构——堆和优先队列(一)] 堆和优先队列——章节介绍 (01:54)
11-2 [JS数据结构——堆和优先队列(一)] 堆和优先队列——什么是优先队列 (07:15)
11-3 [JS数据结构——堆和优先队列(一)] 堆和优先队列——代码实现常规队列(链表) (15:34)
11-4 [JS数据结构——堆和优先队列(一)] 堆和优先队列——代码实现优先队列(链表) (16:49)
11-5 [JS数据结构——堆和优先队列(一)] 堆和优先队列——优先队列时间复杂度 (06:58)
12-1 [JS数据结构——堆和优先队列(二)] 堆和优先队列——什么是堆 (05:28)
12-2 [JS数据结构——堆和优先队列(二)] 堆和优先队列——分析堆结构 (12:19)
12-3 [JS数据结构——堆和优先队列(二)] 堆和优先队列——代码实现堆(插入) (19:20)
12-4 [JS数据结构——堆和优先队列(二)] 堆和优先队列——代码实现堆(处理) (30:08)
12-5 [JS数据结构——堆和优先队列(二)] 堆和优先队列——基于堆结构的优先队列 (09:45)
12-6 [JS数据结构——堆和优先队列(二)] 堆和优先队列——堆优先队列时间复杂度 (09:58)
13-1 [JS数据结构——图形结构(一)] 图形结构——章节介绍 (01:15)
13-2 [JS数据结构——图形结构(一)] 图形结构——什么是图形结构&为什么使用 (09:29)
13-3 [JS数据结构——图形结构(一)] 图形结构——邻接矩阵 (16:06)
13-4 [JS数据结构——图形结构(一)] 图形结构——邻接表 (06:10)
13-5 [JS数据结构——图形结构(一)] 图形结构——邻接矩阵&邻接表 (06:19)
14-1 [数据结构——图形结构(二)] 图形结构——图形结构(添加结点&边) (19:21)
14-2 [数据结构——图形结构(二)] 图形结构——图形结构(查验结点&边) (12:43)
14-3 [数据结构——图形结构(二)] 图形结构——图形结构(删除结点&边) (17:50)
14-4 [数据结构——图形结构(二)] 图形结构——图形结构(性能优化) (13:40)
14-5 [数据结构——图形结构(二)] 图形结构——本章小结&拓展 (01:37)
14-6 [数据结构——图形结构(二)] 图形结构——实现社交网络图 (11:28)