では今回は「ネスト配列(配列の中に配列)+条件付き更新」の例を作り、ステップ実行で変数・配列状態を逐次追跡して解説します。
練習問題:2次元配列内の偶数を2倍にする
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// 偶数を2倍に変換
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] % 2 === 0) {
matrix[i][j] *= 2;
}
}
}
console.log(matrix);
JavaScript出力
[
[1, 4, 3],
[8, 5, 12],
[7, 16, 9]
]
ステップ実行(逐次追跡)
| i | j | matrix[i][j] (前) | 条件 matrix[i][j]%2===0 | matrix[i][j] (後) | 実行内容 |
|---|---|---|---|---|---|
| 0 | 0 | 1 | false | 1 | 偶数でないので変更なし |
| 0 | 1 | 2 | true | 4 | 2×2=4 に更新 |
| 0 | 2 | 3 | false | 3 | 偶数でないので変更なし |
| 1 | 0 | 4 | true | 8 | 4×2=8 に更新 |
| 1 | 1 | 5 | false | 5 | 偶数でないので変更なし |
| 1 | 2 | 6 | true | 12 | 6×2=12 に更新 |
| 2 | 0 | 7 | false | 7 | 偶数でないので変更なし |
| 2 | 1 | 8 | true | 16 | 8×2=16 に更新 |
| 2 | 2 | 9 | false | 9 | 偶数でないので変更なし |
解説ポイント
- 二重ループ
- 外側: 行(i)
- 内側: 列(j)
- 条件付き更新
- 偶数だけを対象に 2 倍に更新
- 逐次追跡表のメリット
- 配列の中身がループごとにどう変化するか明確
- デバッグやロジック確認に有効
- 応用例
- 2次元配列(マトリックス)での条件付き変換
- ゲームのグリッドデータ更新(例: ゼロ以外のセルだけ処理)
- 表形式データの一括処理
💡 拡張例
- 条件を複雑にして「偶数かつ5未満なら3倍」など
- 3次元配列(配列の中に配列の中に配列)で同様に逐次追跡
- 元配列を変更せずに新しい配列に変換(map + map)


