ID (Indonesia) Translation

JavaScript - Iterators yang Didefinisikan oleh Pengguna: Panduan untuk Pemula

Hai teman-teman, para ahli JavaScript masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia Iterators yang Didefinisikan oleh Pengguna. Jangan khawatir jika Anda baru saja memulai programming; saya akan menjadi panduan yang ramah, menjelaskan segala sesuatu langkah demi langkah. Jadi, ambil sebuah gelas kopi, dan mari kita masuk ke dalam!

JavaScript - User Defined Iterators

Apa Itu Iterators?

Sebelum kita melompat ke lubuk dalam, mari kita mulai dari dasar. Bayangkan Anda punya sebuah kotak cokelat (yummy!). Sebuah iterator adalah seperti tangan magis yang membantu Anda mengambil satu cokelat pada saat yang sama, mencatat mana yang sudah Anda makan.

Dalam istilah JavaScript, seorang iterator adalah sebuah objek yang mendefinisikan metode next(), yang mengembalikan item berikutnya dalam urutan. Metode ini adalah kunci kekuatan iterator kita!

Metode next(): Jantung Iterasi

Metode next() adalah tempat semua kegiatan terjadi. Itu seperti mesin mobil kita. Mari kita perincikan:

Struktur next()

{
value: any,
done: boolean
}

Metode ini mengembalikan objek dengan dua properti:

  1. value: Nilai berikutnya dalam urutan.
  2. done: Boolean yang menandakan apakah urutan selesai.

Mari kita lihat contohnya dengan sebuah contoh sederhana:

function simpleIterator() {
let count = 0;
return {
next: function() {
count++;
if (count <= 3) {
return { value: count, done: false };
}
return { value: undefined, done: true };
}
};
}

const iterator = simpleIterator();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

Dalam contoh ini, iterator kita menghitung hingga 3. Setiap kali kita panggil next(), itu memberikan kita nomor berikutnya sampai kita mencapai akhir. Itu seperti mesin hitung kecil!

Iterators yang Didefinisikan oleh Pengguna: Membuat Magic Sendiri

Sekarang kita mengerti dasar-dasar, mari kita buat iterator kita sendiri. Bayangkan kita membuat daftar lagu kesukaan kita. Kita akan membuat iterator yang mengulang lagu-lagu ini.

function playlistIterator(songs) {
let currentIndex = 0;

return {
next: function() {
if (currentIndex < songs.length) {
return {
value: songs[currentIndex++],
done: false
};
} else {
return { done: true };
}
}
};
}

const myPlaylist = ['Bohemian Rhapsody', 'Stairway to Heaven', 'Hotel California'];
const myMusicIterator = playlistIterator(myPlaylist);

console.log(myMusicIterator.next()); // { value: 'Bohemian Rhapsody', done: false }
console.log(myMusicIterator.next()); // { value: 'Stairway to Heaven', done: false }
console.log(myMusicIterator.next()); // { value: 'Hotel California', done: false }
console.log(myMusicIterator.next()); // { done: true }

Di sini, kita membuat playlistIterator yang mengulang array lagu-lagu kita. Setiap kali kita panggil next(), itu memberikan kita lagu berikutnya sampai kita mendengarkan semua lagunya. Itu seperti memiliki DJ pribadi kita sendiri!

Membuat Objek Iterabel

Kita juga bisa membuat objek kita sendiri iterabel. Mari kita buat objek Book yang kita dapat mengulang halamannya:

const Book = {
title: 'The Great Gatsby',
pages: ['It was the best of times...', 'Call me Ishmael...', 'The end.'],
[Symbol.iterator]: function() {
let pageIndex = 0;
return {
next: () => {
if (pageIndex < this.pages.length) {
return { value: this.pages[pageIndex++], done: false };
} else {
return { done: true };
}
}
};
}
};

for (let page of Book) {
console.log(page);
}

Contoh ini membuat objek Book yang kita dapat mengulang menggunakan loop for...of. Itu seperti membalik halaman buku!

Aplikasi Praktis: Dimana Kita Dapat Menggunakan Ini?

Iterators yang didefinisikan oleh pengguna sangat berguna dalam banyak konteks:

  1. Struktur Data Khusus: Jika Anda membuat struktur data sendiri, Anda dapat mendefinisikan bagaimana itu harus diulang.
  2. Evaluasi Malas: Generate nilai secara langsung daripada menyimpan semuanya di memori.
  3. Urutan Tak Terbatas: Buat iterators untuk urutan yang mungkin tak terbatas, seperti bilangan Fibonacci.

Mari kita lihat contoh urutan Fibonacci tak terbatas:

function fibonacciIterator() {
let [prev, curr] = [0, 1];
return {
next: function() {
[prev, curr] = [curr, prev + curr];
return { value: prev, done: false };
}
};
}

const fib = fibonacciIterator();
console.log(fib.next().value); // 1
console.log(fib.next().value); // 1
console.log(fib.next().value); // 2
console.log(fib.next().value); // 3
console.log(fib.next().value); // 5

Iterator ini akan terus generate bilangan Fibonacci selamanya! Itu seperti memiliki jin matematika di perintah Anda.

Kesimpulan: Kuasa Iterasi

Iterators yang didefinisikan oleh pengguna memberikan kita kekuatan untuk mengendalikan bagaimana kita melintasi data. Mereka seperti tools khusus yang membantu kita mengnavigasi kode dalam cara yang kita inginkan. Apakah Anda membalik halaman buku, mengulang playlist, atau menggenerate urutan matematika tak terbatas, iterators selalu ada untuk Anda!

Ingat, kunci untuk menguasai iterators adalah latihan. Cobalah membuat iterators Anda sendiri untuk berbagai konteks. Mungkin iterator untuk sebuah deck kartu, atau yang menggenerate bilangan prima. Kesempatan adalah tak terbatas!

Happy coding, dan may your iterators always find the next value!

Credits: Image by storyset