- 01Setting Up (What You'll Need)
- 02Creating Variables
- 03Conditionals (if Statements)
- 04Loops (for Statements)
- 05Creating Functions
- 06Working with Arrays
- 07Working with Objects
- 08Loops (while Statements)
- 09Working with Strings
- 10Using Classes (Object-Oriented Programming)
- 11Error Handling (try...catch)
- 12Destructuring and the Spread Syntax
- 13Async Code (Promise / async & await)
- 14Advanced Array Methods (filter and reduce)
- 15The switch Statement
- 16The Ternary Operator
- 17Inheritance (Extending Classes)
- 18How to Write Comments
- 19Logical Operators (AND, OR, NOT)
- 20Constants (Making Read-Only Values with const)
- 21Splitting and Joining Strings (split and join)
- 22Null-Safe Syntax (?? and ?.)
- 23Searching Arrays and Collections (includes and find)
- 24Transforming Arrays with map
- 25Two-Dimensional Arrays (Table-Shaped Data)
- 26Building a Custom Error Class
- 27Default Arguments (Setting Initial Values for Parameters)
- 28Using Set (Collections)
- 29Verifying Correctness with assert (Your First Step Into Testing)
- 30Higher-Order Functions (Passing a Function as an Argument)
- 31Stacks and Queues (Basic Data Structures)
- 32The Basics of Type Conversion (Casting)
- 33Introduction to Regular Expressions (Pattern Matching)
- 34The Binary Search Algorithm
- 35Building a Caesar Cipher (a Letter-Shifting Cipher)
- 36Understanding How Bubble Sort Works
- 37Building and Displaying Dates (Basic Year/Month/Day Operations)
- 38Writing Several Unit Tests Together (Multiple Test Cases)
- 39Speeding Up Calculations with Memoization (Caching)
- 40Normalizing Strings (trim and Case Unification)
- 41The Difference Between Shallow Copy and Deep Copy
- 42The Basics of Enums (Enumerated Types)
- 43Flattening Arrays (flatten)
- 44Reversing a String and Checking for a Palindrome
- 45Pairing Up Two Arrays (a zip Operation)
- 46Rounding Numbers (floor, ceil, and round)
- 47Multi-Line Strings (Template Literals)
- 48Returning Multiple Values from a Function (Array Destructuring)
- 49Finding the GCD and LCM (the Euclidean Algorithm)
- 50Formatting Numbers (Digit Alignment and Decimal Precision)
- 51Cleanup Processing with try/catch/finally
- 52Writing Type-Agnostic, General-Purpose Functions
- 53The Basics of Map (an Object for Key-Value Pairs)
- 54Generating Random Numbers
- 55Bitwise Operations (AND, OR, XOR, and Shift Operations)
- 56Using static (Static Class Properties and Methods)
- 57Waiting a Fixed Amount of Time (setTimeout and await)
- 58Watch Out for Floating-Point Rounding Error
- 59Transforming and Flattening at Once with flatMap()
- 60FizzBuzz (the Classic Practice Problem)
- 61Checking Whether a Number Is Prime
- 62Set Operations with Set (Union, Intersection, and Difference)
- 63Converting Number Bases (Binary and Hexadecimal)
- 64Checking That Brackets Match (an Application of Stacks)
- 65Checking for an Anagram
- 66Checking Whether a Year Is a Leap Year
- 67Converting Temperature (Celsius ⇄ Fahrenheit)
- 68Finding the Prime Factorization
- 69[Applied] Build a Simple To-Do List Tool
Two-Dimensional Arrays (Table-Shaped Data)
In this lesson you'll learn how to work with two-dimensional arrays in JavaScript so you can represent table-like or grid-like data. This is for people searching "JavaScript 2D array usage" or "JavaScript nested arrays."
Putting an array inside an array lets you represent a "table with rows and columns," a grid-like shape. This is called a two-dimensional array. You access it with two indices, like grid[row][column]. It's the basic idea behind representing a game board with coordinates, or spreadsheet-like data. Nest arrays inside arrays even further, and you can represent three-, four-, and higher-dimensional data structures too.
The sample code creates a 3x2 two-dimensional array called grid, and extracts the value at row 2, column 3 with grid[1][2]. Displaying each row with .join(",") inside a for...of loop is a commonly used pattern for making the contents of a two-dimensional array easy to check. Remember the order: specify the row first, then the column.
A common beginner stumbling block is reversing the order of the row and column indices. Writing grid[column][row] ends up accessing an unintended position. Also be careful when copying a two-dimensional array: using ... alone doesn't copy the inner arrays too (it's only a shallow copy).
In real development, two-dimensional arrays show up frequently in programs that handle grid-shaped data — image processing, managing a game's board, or importing spreadsheet-like data. This idea is also foundational in fields like data analysis and AI that rely on matrix operations.
When initializing a two-dimensional array, there's a pitfall where reusing and duplicating the same array causes every row to reference the same underlying array. Making sure to create a fresh array for each row is the trick to building a correct two-dimensional array.
💡 Anything passed to console.log() appears in the output below.
