JavaScript Iterator merupakan objek yang mendefinisikan sebuah urutan dan mengembalikan objek dengan dua properti: value (nilai saat ini dalam urutan) dan done (nilai boolean yang bernilai true jika iterasi telah selesai). Fitur modern dalam ECMAScript/JavaScript ini secara historis meminjam konsep iterator dan generator dari bahasa pemrograman Python.
Berdasarkan catatan kompilasi lintas bahasa, sintaks dan mekanisme iterasi pada JavaScript dirancang dengan terinspirasi dari bagaimana Python menangani perulangan objek secara iteratif. Hal ini memungkinkan pengembang untuk melakukan iterasi pada struktur data kustom secara lebih terkontrol dan efisien.
Karakteristik Utama Iterator
Sebuah objek dikategorikan sebagai iterator ketika ia mengimplementasikan metode next(). Metode ini dipanggil untuk menghasilkan elemen berikutnya secara berurutan hingga data habis.
| Properti/Metode | Tipe Data | Keterangan |
|---|---|---|
next() |
Fungsi | Mengembalikan objek dengan properti value dan done. |
value |
Any | Nilai dari elemen saat ini dalam siklus iterasi. |
done |
Boolean | Menandai status akhir iterasi (true jika selesai). |
Contoh Implementasi Dasar
Berikut adalah contoh sintaks pembuatan iterator sederhana menggunakan fungsi di dalam JavaScript:
function buatIterator(array) {
let indeks = 0;
return {
next: function() {
if (indeks < array.length) {
return { value: array[indeks++], done: false };
} else {
return { value: undefined, done: true };
}
}
};
}
const iter = buatIterator(['apel', 'jeruk']);
console.log(iter.next()); // { value: 'apel', done: false }
console.log(iter.next()); // { value: 'jeruk', done: false }
console.log(iter.next()); // { value: undefined, done: true }
Hubungan Konseptual dengan Python
Penerapan protokol iterator di dalam JavaScript diadopsi untuk menyeragamkan cara pengaksesan struktur data yang dapat diulang (iterable), mirip dengan cara kerja iterator pada Python. Adopsi ini membuat pustaka standar dan manipulasi data array, map, serta set menjadi lebih konsisten di berbagai lingkungan eksekusi JavaScript modern.