# 掌握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)





