解决什么问题:把散落的 JS 知识串成线

很多职场开发只把 JavaScript 当作脚本语言,写写增删改查,遇到复杂数据处理就堆逻辑。这门课主要解决“知其然不知其所以然”的问题,帮你把散落在数组、对象里的零散知识,通过数据结构的视角重新串联。它不教你写死板的 C++ 结构体,而是用 JS 的原生特性(Map、Set、WeakMap 等)来构建更高效的算法逻辑。对于需要处理海量数据、频繁增删节点,或者想要优化代码性能的岗位,这是从“会用”到“精通”的必经之路。

适合什么基础:有 JS 基础的进阶必修

这门课不是给零基础准备的,它默认你已经掌握 JavaScript 的基本语法。如果你能熟练写出函数、理解闭包和原型链,那么可以直接上手。资料包中开篇就对比了数组与集合、对象与映射的区别,这正是给有一定经验的开发者准备的“认知升级”内容。如果你还在纠结 JS 的 Map 和 Object 的区别,或者经常因为数据结构设计不当导致代码性能下降,这门课非常适合你。

学完能做什么:独立设计核心算法

学完这套资料,你不需要再去背教科书上的伪代码,而是能直接用 JS 实现链表、栈、队列、树和图等核心结构。资料中详细演示了如何用 JS 的引用特性来实现自定义链表,以及如何利用 WeakMap 来解决内存泄漏的隐患。这能让你在面试中轻松应对“手写一个 LRU 缓存”或“实现一个二叉树遍历”的难题,也能在真实工作中写出更健壮的数据处理逻辑。

资料怎么配合练习

建议先看课程介绍和入门章节,建立对 JS 原生数据结构的正确认知。接着重点看“对象VS映射”和“弱集合&弱映射”等对比类内容,理解不同结构的应用场景。在练习时,不要只看演示,试着在本地环境复现资料中提到的链表实现,并尝试修改它以支持双向遍历。通过反复动手,你才能真正掌握这些抽象概念。

课程目录

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)