Memahami Konsep Javascript Iterator dan Asal-Usulnya

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.