Suggest an editImprove this articleRefine the answer for “How do you declare a two-dimensional array of numbers?”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)The simplest way is `number[][]`, where `matrix` is an array, each element `matrix[i]` is an array of numbers (`number[]`), and each element `matrix[i][j]` is a specific number (`number`). **Key point:** an equivalent, more formal notation is `Array<Array<number>>`, which is convenient for more complex types.Shown above the full answer for quick recall.Answer (EN)Image## 1. The simplest way - `number[][]` ```javascript const matrix: number[][] = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; ``` > Here: > > - `matrix` is an array; > - each element `matrix[i]` is an array of numbers (`number[]`); > - each element `matrix[i][j]` is a specific number (`number`). --- ### Type checking ```javascript matrix[0][1]; // number matrix[1]; // number[] matrix[2][2] = 10; // fine matrix.push([11, 12, 13]); // adding a row matrix.push([1, "2", 3]); // Error: "2" is not a number ``` --- ## 2. An alternative via generic notation ```javascript const grid: Array<Array<number>> = [ [1, 0], [0, 1], ]; ``` > Equivalent to `number[][]`. > Just a different (more formal) notation - useful for complex types. --- ## 3. Creating a two-dimensional array programmatically ### Via `Array.from` ```javascript const rows = 3; const cols = 4; const matrix: number[][] = Array.from({ length: rows }, () => Array(cols).fill(0) ); console.log(matrix); // [ // [0, 0, 0, 0], // [0, 0, 0, 0], // [0, 0, 0, 0] // ] ``` --- ### Via nested loops ```javascript const matrix: number[][] = []; for (let i = 0; i < 3; i++) { matrix[i] = []; for (let j = 0; j < 3; j++) { matrix[i][j] = i + j; } } ``` --- ## 4. An immutable (readonly) matrix If you need to forbid changes: ```javascript const matrix: readonly (readonly number[])[] = [ [1, 2], [3, 4], ]; ``` > Now you can neither change the rows nor their elements: ```javascript matrix[0].push(5); // Error matrix.push([5, 6]); // Error ``` --- ## 5. Three-dimensional and larger arrays The same principle: ```javascript const cube: number[][][] = [ [ [1, 2], [3, 4], ], [ [5, 6], [7, 8], ], ]; ``` > `number[][][]` = an array where each element is `number[][]`. --- ## Summary | What it describes | Syntax | Example | | --- | --- | --- | | An array of numbers | `number[]` | `[1,2,3]` | | An array of arrays of numbers (2D) | `number[][]` | `[[1,2],[3,4]]` | | Generic form | `Array<Array<number>>` | `[[1,0],[0,1]]` | | An immutable 2D array | `readonly (readonly number[])[]` | `[[1,2],[3,4]]` | | A 3D array | `number[][][]` | `[[[1,2],[3,4]]]` |For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.