Tiga cabang toko mencatat penjualan harian, tetapi cabang pertama membuka tiga hari, cabang kedua empat hari, dan cabang ketiga dua hari. Array multidimensi menuntut seluruh baris sama panjang, sehingga struktur tersebut boros memori untuk data seperti ini. Array jagged menyelesaikan ketidaksesuaian itu: array yang setiap elemennya berupa array lain dengan panjang bebas.

Deklarasi Array Jagged #

Sintaks int[][] menyatakan array dari array int. Array luar dialokasikan terlebih dahulu, kemudian setiap array dalam dialokasikan sendiri-sendiri. Karena setiap baris adalah objek array yang berdiri sendiri, properti Length bisa dipanggil pada array luar maupun pada tiap baris.

csharp
int[][] penjualanCabang =
{
    new int[] { 5, 7, 6 },
    new int[] { 10, 12, 9, 8 },
    new int[] { 3, 4 }
};

Console.WriteLine(penjualanCabang.Length);
Console.WriteLine(penjualanCabang[0].Length);
Console.WriteLine(penjualanCabang[1].Length);
Console.WriteLine(penjualanCabang[2].Length);
Console.WriteLine(penjualanCabang[1][2]);

Output yang Dihasilkan:

text
3
3
4
2
9

Mari kita telaah baris demi baris:

  1. Baris 1-5: Array luar memuat tiga elemen, dan setiap elemen diisi array baru dengan panjang yang berbeda-beda.
  2. Baris 7 (penjualanCabang.Length): Length pada array luar melaporkan jumlah baris, yaitu 3.
  3. Baris 8-10 (penjualanCabang[i].Length): Length pada tiap baris melaporkan panjang baris itu sendiri: 3, 4, dan 2.
  4. Baris 11 (penjualanCabang[1][2]): Dua pasang kurung dibaca bertahap: kurung pertama memilih baris 1, kurung kedua memilih elemen 2 pada baris tersebut, yaitu 9.

Menjumlahkan Tiap Baris #

Penelusuran array jagged memadukan for loop untuk array luar dan foreach untuk tiap baris:

csharp
for (int i = 0; i < penjualanCabang.Length; i++)
{
    int total = 0;
    foreach (int nilai in penjualanCabang[i])
    {
        total += nilai;
    }
    Console.WriteLine($"Total cabang {i + 1}: {total}");
}

Output yang Dihasilkan:

text
Total cabang 1: 18
Total cabang 2: 39
Total cabang 3: 7

Loop luar mengunjungi baris satu per satu, dan foreach menjumlahkan isi baris yang sedang diproses tanpa peduli panjangnya. Foreach bekerja di sini karena setiap penjualanCabang[i] memang sebuah array utuh.

AspekMultidimensi (int[,])Jagged (int[][])
BentukTabel persegi panjangBaris dengan panjang bebas
DeklarasiSatu objek berdimensi banyakArray luar plus array dalam terpisah
Akses elemennilai[1, 2]nilai[1][2]
Cocok untukGrid tetap, papan permainanData baris tidak sama panjang