Javascript Iterator adalah objek atau pola yang memungkinkan kita melintasi daftar atau koleksi. Iterator menentukan urutan dan mengimplementasikan protokol iterator yang mengembalikan objek dengan menggunakan metode next[] yang berisi nilai dan selesai. Nilai tersebut berisi nilai selanjutnya dari urutan iterator dan yang dilakukan adalah nilai boolean benar atau salah jika nilai terakhir dari urutan tersebut telah dikonsumsi maka benar jika tidak salah.
Kami dapat memeriksa apakah ada entitas yang secara default dapat diubah atau tidak. Kami dapat memeriksa prototipenya dan dapat melihat apakah ia memiliki metode Symbol[Symbol. iterator] atau tidak.
Dalam Array. prototipe Anda akan menemukan Symbol[Symbol. iterator]. ƒ nilai[] metode. Array secara default dapat diubah. Juga, String, Map & Set adalah built-in iterables karena objek prototipe mereka semuanya memiliki Simbol. metode iterator[]
Contoh. Contoh ini menggunakan simbol. pendekatan iterator untuk beralih ke array
javascript
const array = [
________79__80_______
a b c0
,
a b c2
a b c3
a b c_4
a b c6
a b c_4
a b c_9
a b c_4
{value: 'item value', done: boolean}2
{value: 'item value', done: boolean}_4
a b c_4
{value: 'item value', done: boolean}2
{value: 'item value', done: boolean}_9
a b c_4
{value: 'item value', done: boolean}2
var newIt = arr[Symbol.iterator] newIt[] //Because it does not properly bind Uncaught TypeError: Cannot convert undefined or null to object //How we can fix this //var newIt = arr[Symbol.iterator].bind[arr]; newIt[] Array Iterator { }4
a b c_4
{value: 'item value', done: boolean}2
________15______9
0 1 2 3 41
0 1 2 3 43
0 1 2 3 45
0 1 2 3 4_6
Keluaran
{"value":"a","done":false} {"value":"b","done":false} {"value":"c","done":false} {"done":true}
Menggunakan untuk. dari loop, kita dapat mengulangi entitas apa pun [misalnya. objek] yang mengikuti protokol iterable. untuk. of loop akan mengeluarkan nilai yang dikembalikan dengan memanggil metode next[] setiap kali
Contoh. Contoh ini menggunakan for. dari loop untuk beralih ke array
javascript
const array = [
________79__80_______
a b c0
,
a b c2
a b c3
________76______7
9
0
0 1 2 3 4_6
Keluaran
a b c
Protokol yang dapat diubah. Objek harus mendefinisikan metode dengan 'Simbol. iterator’ kunci yang mengembalikan objek yang mengikuti protokol iterator. Objek harus menentukan metode 'selanjutnya' yang mengembalikan objek yang memiliki dua properti 'nilai' dan 'selesai'
JavaScript menyediakan protokol untuk mengulang struktur data. Protokol ini menentukan bagaimana struktur data ini diulang menggunakan
Array Iterator {} StringIterator {}0 loop
Konsep protokol dapat dibagi menjadi
Protokol iterable menyebutkan bahwa iterable harus memiliki kunci
Array Iterator {} StringIterator {}1
Iterable JavaScript
Struktur data yang memiliki metode
Array Iterator {} StringIterator {}_2 disebut iterables. Misalnya, Array, String, Set, dll
Iterator JavaScript
Iterator adalah objek yang dikembalikan oleh metode
Array Iterator {} StringIterator {}2
Protokol iterator menyediakan metode
Array Iterator {} StringIterator {}_4 untuk mengakses setiap elemen iterable [struktur data] satu per satu
Mari kita lihat contoh iterables yang memiliki
Array Iterator {} StringIterator {}5
const arr = [1, 2 ,3];
// calling the Symbol.iterator[] method
const arrIterator = arr[Symbol.iterator][];
// gives Array Iterator
console.log[arrIterator];
const str = 'hello';
// calling the Symbol.iterator[] method
const strIterator = str[Symbol.iterator][];
// gives String Iterator
console.log[strIterator];
Keluaran
Array Iterator {} StringIterator {}
Di sini, memanggil metode
Array Iterator {} StringIterator {}_2 dari array dan string mengembalikan masing-masing iterator
Iterasi Melalui Iterables
Anda dapat menggunakan
Array Iterator {} StringIterator {}0 loop untuk beralih melalui objek yang dapat diubah ini. Anda dapat mengulang melalui metode
Array Iterator {} StringIterator {}_2 seperti ini
const number = [ 1, 2, 3];
for [let n of number[Symbol.iterator][]] {
console.log[n];
}
Keluaran
1 2 3
Atau Anda cukup mengulang melalui array seperti ini
const number = [ 1, 2, 3];
for [let n of number] {
console.log[n];
}
Di sini, iterator memungkinkan
Array Iterator {} StringIterator {}_0 loop untuk beralih ke array dan mengembalikan setiap nilai
Metode JavaScript next[]
Objek iterator memiliki metode
Array Iterator {} StringIterator {}_4 yang mengembalikan item berikutnya dalam urutan
Metode
Array Iterator {} StringIterator {}_4 berisi dua properti.
const number = [ 1, 2, 3];
for [let n of number[Symbol.iterator][]] {
console.log[n];
}
2 dan const number = [ 1, 2, 3];
for [let n of number[Symbol.iterator][]] {
console.log[n];
}
3- nilai
Properti
_2 dapat berupa tipe data apa pun dan mewakili nilai saat ini dalam urutanconst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
- selesai
Properti
_3 adalah nilai boolean yang menunjukkan apakah iterasi selesai atau tidak. Jika iterasi tidak lengkap, properticonst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
_3 disetel keconst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
7, selain itu disetel keconst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
8const number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
Mari kita lihat contoh array iterables
const arr = ['h', 'e', 'l', 'l', 'o'];
let arrIterator = arr[Symbol.iterator][];
console.log[arrIterator.next[]]; // {value: "h", done: false}
console.log[arrIterator.next[]]; // {value: "e", done: false}
console.log[arrIterator.next[]]; // {value: "l", done: false}
console.log[arrIterator.next[]]; // {value: "l", done: false}
console.log[arrIterator.next[]]; // {value: "o", done: false}
console.log[arrIterator.next[]]; // {value: undefined, done: true}
Anda dapat memanggil
Array Iterator {} StringIterator {}_4 berulang kali untuk mengulangi objek
1 2 30
- Metode
Array Iterator {} StringIterator {}
_4 mengembalikan objek dengan dua properti.
2 danconst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
3const number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
- Ketika metode
Array Iterator {} StringIterator {}
_4 mencapai akhir urutan, maka properti
3 disetel keconst number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
7const number = [ 1, 2, 3]; for [let n of number[Symbol.iterator][]] { console.log[n]; }
Mari kita lihat bagaimana
Array Iterator {} StringIterator {}0 loop mengeksekusi program di atas. Sebagai contoh,
const arr = ['h', 'e', 'l', 'l', 'o'];
for [let i of arr] {
console.log[i];
}
Keluaran
h e l l o
Loop
Array Iterator {} StringIterator {}_0 melakukan hal yang persis sama dengan program di atas
Loop
Array Iterator {} StringIterator {}_0 terus memanggil metode
Array Iterator {} StringIterator {}4 pada iterator. Setelah mencapai
const number = [ 1, 2, 3];
for [let n of number] {
console.log[n];
}
_1, loop Array Iterator {} StringIterator {}0 berakhir
Iterator yang Ditentukan Pengguna
Anda juga dapat membuat iterator Anda sendiri dan memanggil
Array Iterator {} StringIterator {}4 untuk mengakses elemen berikutnya. Sebagai contoh,
function displayElements[arr] {
// to update the iteration
let n = 0;
return {
// implementing the next[] function
next[] {
if[n < arr.length] {
return {
value: arr[n++],
done: false
}
}
return {
value: undefined,
done: true
}
}
}
}
const arr = ['h', 'e', 'l', 'l', 'o'];
const arrIterator = displayElements[arr];
console.log[arrIterator.next[]];
console.log[arrIterator.next[]];
console.log[arrIterator.next[]];
console.log[arrIterator.next[]];
console.log[arrIterator.next[]];
console.log[arrIterator.next[]];
Keluaran
{value: "h", done: false} {value: "e", done: false} {value: "l", done: false} {value: "l", done: false} {value: "o", done: false} {value: undefined, done: true}
Pada program di atas, kita telah membuat iterator kita sendiri. Fungsi
const number = [ 1, 2, 3];
for [let n of number] {
console.log[n];
}
_4 mengembalikan properti const number = [ 1, 2, 3];
for [let n of number[Symbol.iterator][]] {
console.log[n];
}
2 dan const number = [ 1, 2, 3];
for [let n of number[Symbol.iterator][]] {
console.log[n];
}
3