JavaScript Data Structures - The Fundamentals
Learn all the core basics about JS data structures - both built-in ones like Maps, Sets or Arrays as well as custom ones like Linked Lists, Trees, Graphs etc.
Start courseWhen working with JavaScript, you'll work with data structures all the time.
That includes built-in ones like Arrays, Objects, Maps or Sets but - especially if you dive deeper into JavaScript - also custom data structures like Linked Lists, Trees or Graphs.
This course covers it all!
We'll recap the basic built-in data structures to understand how they work and when to use them, before we then explore important custom data structures.
In detail, this course covers the following structures:
- Arrays (built-in)
- Objects (built-in)
- Sets (built-in)
- Maps (built-in)
- Linked Lists (custom)
- Stacks (custom)
- Queues (custom)
- Hash Tables (custom)
- Basic Trees (custom)
- Binary Search Trees (BST, custom)
- AVL Trees (custom)
- Priority Queues (custom)
- Heaps (custom)
- Graphs (custom
You will learn how those different data structures work, when they might be helpful, how to build them and of course we'll also explore their time complexity (Big O notation)!
You'll get both the theory as well as practical examples to ensure that you fully understand all those key structures and you're able to work with them on your own after you finished this course - no matter if you need them for your next project or simply to ace an upcoming job interview!
To get the most out of this course, you should ensure that you have a basic understanding of JavaScript algorithms and that you especially understand the concept of time complexity and "Big O" notation. In case you're missing those prerequisites right now, you can explore our Algorithms course!
Course content
Section 1Getting Started
- Welcome to the Course!1:11
- What are "Data Structures"?4:58
- Course Resources1:00
- Arrays: Recap8:57
- Sets: Recap5:46
- Arrays vs Sets1:34
- Objects: Recap7:05
- Maps: Recap7:37
- Objects vs Maps1:43
- WeakSet and WeakMap2:16
- Linked Lists (A First Custom Data Structures)2:46
- Starting with Linked Lists and "append"13:19
- Outputting the Linked List4:58
- Prepend to Linked Lists4:09
- Deleting Nodes10:31
- "find" and "insertAfter"6:56
- Linked Lists: Why and Time Complexity5:28
- Linked Lists vs Arrays7:06
- Module Resources1:00
Section 2Lists & Tables
- Module IntroductionPremium0:55
- What are "Lists" and "Tables"?Premium4:22
- Built-in Lists and TablesPremium3:42
- Introducing "Stacks"Premium5:51
- Building a "Stack" Data StructurePremium7:01
- Considering a Linked List StackPremium2:41
- Stacks with Linked ListsPremium9:12
- Stacks: Time ComplexityPremium4:50
- Introducing QueuesPremium3:24
- Building a QueuePremium4:34
- Linked Lists & QueuesPremium5:09
- Queue Time ComplexityPremium4:45
- Introducing Hash TablesPremium4:18
- Why we need TablesPremium9:54
- Building a Basic Hash TablePremium12:20
- Understanding Hash CollisionsPremium4:58
- Solving Collisions with ChainingPremium11:51
- Solving Collisions with Open AddressingPremium10:42
- Hash Tables: Time ComplexityPremium7:04
- Hash Tables: SummaryPremium4:46
- Module ResourcesPremium1:00
Section 3Trees
- Module IntroductionPremium1:35
- What are "Trees"?Premium3:28
- Core TerminologyPremium8:58
- An Example TreePremium2:43
- A First Tree in CodePremium11:16
- A Better Filesystem TreePremium14:10
- Removing Tree NodesPremium7:06
- Describing Our TreePremium6:49
- Trees: Time ComplexityPremium4:42
- Depth-first vs Breadth-first SearchPremium2:21
- Implementing Depth-first SearchPremium6:01
- Implementing Breadth-first SearchPremium3:27
- Depth-first Search vs Breadth-first SearchPremium5:06
- Introducing Binary Search Trees (BST)Premium3:34
- Adding Values to BSTPremium6:27
- Finding Values in BSTPremium10:13
- Removing Leaf Nodes in BSTPremium7:46
- Removing "One-Child" Nodes in BSTPremium5:12
- Removing "Multi-Child" Nodes in BSTPremium12:09
- BST Time ComplexityPremium3:38
- Introducing AVL TreesPremium3:08
- Balancing Trees with RotationsPremium4:05
- Understanding Balance FactorsPremium2:59
- Adding Depth and Balance FactorsPremium6:25
- Finding the Right RotationPremium8:07
- Implementing Left RotationPremium9:50
- Implementing Right RotationPremium3:21
- Implementing Left-Right RotationPremium8:10
- Implementing Right-Left RotationPremium3:28
- Testing the AVL TreePremium3:06
- AVL vs BSTPremium1:05
- Introducing TriesPremium3:35
- Building a TriePremium12:01
- Finding Nodes in a TriePremium3:24
- Deleting KeysPremium3:57
- Tries: Time Complexity and Comparison to Hash TablesPremium5:41
- Module ResourcesPremium1:00
Section 4Priority Queues & Heaps
- Module IntroductionPremium0:37
- Understanding Priority QueuesPremium2:03
- Building a Regular QueuePremium4:22
- Priority Queues & Time ComplexityPremium2:07
- Building a Basic Priority QueuePremium7:33
- Introducing HeapsPremium3:22
- Exploring the Heap ConceptPremium5:50
- Building a HeapPremium11:20
- Processing ItemsPremium11:51
- A Heap-based Priority QueuePremium4:34
- Heaps & Time ComplexityPremium5:53
- Module ResourcesPremium1:00
Section 5Graphs
- Module IntroductionPremium0:37
- Graphs: What and Why?Premium6:01
- Graphs with an Adjacency MatrixPremium9:56
- Using Adjacency Lists InsteadPremium4:27
- Adjacency Lists vs MatricesPremium5:44
- Building a Graph StructurePremium7:06
- Adding Graph MethodsPremium7:01
- Removing Nodes & EdgesPremium10:47
- Using Sets in GraphsPremium7:14
- SummaryPremium1:08
- Building a Social Network GraphPremium5:53
- Module ResourcesPremium1:00
Section 6Summary & Next Steps
- Course SlidesPremium1:00
- Next StepsPremium1:00
Course instructor
Maximilian Schwarzmüller
As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.
The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.