Struktur Data Maps di JavaScript
Maps adalah sebuah data struktur baru yang ada pada JavaScript sejak versi ES6.
Penggunaan paling umum dari object di JavaScript adalah sebagai hash map, yang memetakan sebuah key berbentuk string dengan sebuah nilai yang akan disimpan.
Dengan menggunakan hash map untuk membuat object, kita memiliki cara yang lebih mudah untuk melakukannya.
Jadi maps adalah sebuah struktur data yang menggunakan format key–value.
Berbeda data struktur object, pada maps kita bisa menggunakan apa saja sebagai key, baik string, number, boolean atau bahkan kita bisa menggunakan fungsi atau object sebagai key.
Sedangkan pada object kita hanya bisa menggunakan string sebagai key dari sebuah nilai.
Cara Membuat Maps di JavaScript
Untuk membuat sebuah maps dan menambahkan data ke dalamnya, kita menggunakan cara seperti seperti berikut:
const pertanyaan = new Maps(); pertanyaan.set(‘pertanyaan’, ‘Siapa nama presiden ketujuh Indonesia?’); pertanyaan.set(1, ‘Joko Widodo?’); pertanyaan.set(2, ‘SBY’); pertanyaan.set(3, ‘Gus Dur’); pertanyaan.set(4, ‘BJ Habibie’); pertanyaan.set(‘jawaban’, 1); pertanyaan.set(true, ‘Jawaban anda benar!’); pertanyaan.set(false, ‘Maaf. Jawaban anda salah!’);
Seperti pada potongan kode diatas, untuk membuat sebuah maps baru yang kosong kita melakukannya dengan menggunakan keyword “new Maps();” dan kemudian menyimpannya kedalam sebuah variabel.
Sedang untuk menambahkan data kedalam sebuah maps, kita menggunakan “set” dan dua parameter sebagai key dan nilai dari data yang ingin ditambahkan.
Parameter pertama adalah “key” dari data yang ingin ditambahkan, sedangkan parameter yang kedua adalah value yang dipetakan oleh “key” tersebut.
Cara Mengambil Nilai Dari Sebuah Data pada Maps
Untuk mendapatkan nilai dari sebuah data yang pada sebuah maps, kita bisa melakukannya dengan menggunakan method “get”.
Kita bisa melakukannya dengan cara menggunakan memberikan key dari data yang ingin kita ambil.
Misalnya seperti berikut:
let x = pertanyaan.get(‘jawaban’); console.log(x); // akan menghasilkan 1
Pada potongan kode diatas kita mengambil value dari data dengan key jawaban, kemudian menyimpannya pada variable “x”.
Cara Menghitung Jumlah Data di Maps
Hampir sama seperti array yang membawa method default untuk menghitung jumlah data yang ada, pada maps kita bisa melakukan hal serupa dengan menggunakan method “size”.
Misalnya kamu bisa menghitung banyaknya data yang ada pada maps “pertanyaan”, kamu bisa melakukannya seperti berikut:
let size = pertanyaan.size(); console.log(size);
Cara Menghapus Sebuah Data di Maps
Untuk menghapus sebuah data yang ada pada maps, kamu bisa menggunakan method dengan kata kunci “delete”, dan kemudian memberikan “key” dari data yang ingin dihapus.
Misalnya, sebelumnya kita sudah mengatur bebearapa data pilihan jawaban dengan masing-masing “key” dari data tersebut adalah 1, 2, 3, 4.
Tapi kemudian kita ingin menghapus data dengan “key” 4, kita bisa melakukannya seperti berikut:
pertanyaan.delete(4);
Kemudian data dengan “key” 4 akan dihapus dari maps pertanyaan tersebut.
Menguji Ketersediaan Sebuah Data
Maps juga memberikan method bawaan untuk menguji apakah pada sebuah maps terdapat sebuah data key tertentu, yaitu “has”.
Method ini akan mengembalikan nilai “true” jika data tersebut tersedia dan mengembalikan false jika tidak tersedia.
Misalnya kita ingin menguji apakah data dengan “key” 3 dan 10 ada pada maps “pertanyaan” yang sudah kita buat sebelumnya kita bisa melakukannya cara seperti berikut:
pertanyaan.has(3); // akan mengembalikan true pertanyaan.has(10); // akan mengembalikan false
Pada contoh potongan code diatas kita menguji apakah pada maps pertanyaan terdapat sebuah data dengan “key” 3 dan 10.
Pada pengujian pertama kita akan mendapatkan nilai true karena pada maps pertanyaan terdapat data dengan key 3, sedangkan pada pengujian kedua kita akan mendapat nilai false karena pada maps pertanyaan tidak terdapat data dengan key 10 yang kita definisikan.
Menghapus Semua Data Pada Maps
Sebelumnya kita sudah melihat bagaimana cara menghapus sebuah data dengan “key” tertentu pada maps menggunakan method “delete”.
Ada method lain pada maps yang juga digunakan untuk menghapus data yang ada di dalamnya, yaitu “clear”.
Seperti namanya yang berarti membersihkan, method bukan menghapus data key tertentu, melainkan menghapus semua data yang ada di dalam sebuah maps.
Misalnya kita ingin menghapus semua data yang ada pada maps pertanyaan yang sudah kita buat sebelumnya, kita melakukannya hanya dengan menulis method “clear” seperti berikut:
pertanyaan.clear();
Kemudian method “clear” akan menghapus semua data yang ada pada di dalam maps pertanyaan tersebut.
Melakukan Iterasi Terhadap Data Pada Maps
Menggunakan maps sebagai sebuah struktur data lebih direkomendasikan dibandingkan dengan object. Salah satu alasannya karena tipe data apa saja sebagai key dari sebuah data pada maps.
Pada maps kita juga melakukan iterasi atau looping pada setiap elemen-element dari dari maps tersebut. Dengan begitu kita bisa dengan lebih melakukan manipulasi-manipulasi data.
Untuk melakukan looping pada maps kita bisa menggunakan method “forEach” dan “for of” yang merupakan method bawaan atau prototype dari semua data yang berstruktur maps, sama seperti array.
Melakukan Iterasi Terhadap Data Pada Maps Menggunakan forEach
Cara melakukan iterasi pada maps yang pertama adalah dengan menggunakan metode “forEach”.
Misalnya kita ingin melakukan iterasi pada maps “pertanyaan” sebelumnya dan mencetak semua pasangan key dan value-nya, kita bisa melakukannya dengan cara seperti berikut:
pertanyaan.forEach((value, key) => console.log(`Ini adalah ${key}, dan mempunyai value: ${value}`); );
Maka akan muncul semua key-value dari data atau elemen yang ada di dalam maps tersebut.
Melakukan Iterasi Terhadap Data Maps Dengan Menggunakan For of
Selain dengan menggunakan “forEach”, kita kita juga melakukan iterasi pada maps dengan menggunakan “For of”.
Misalnya kita ingin melakukan iterasi maps “pertanyaan” seperti sebelumnya, kita bisa melakukannya seperti berikut:
for (let [key, value] of pertanyaan.entries()) { console.log(`Ini adalah ${key}, dan mempunyai value: ${value}`); }
Pada potongan kode diatas, kita menggunakan keyword “entries” pada pertanyaan” sebagai data yang akan diiterasikan.
Dengan menulis “pertanyaan.entries()” seperti tersebut berarti kita akan melakukan iterasi semua data yang ada di dalam maps tersebut dan menampungnya dalam variable “key” dan “value”.
Kemudian “key” dan “value” dari data yang ada pada maps didestrukturisasi sehingga memudahkan penggunaannya nantinya.