memperkenalkan
Mode Iterator: Menyediakan metode untuk memesan elemen individual dalam objek agregat tanpa mengekspos representasi internal objek.
Beberapa karakteristik iterator adalah:
1. Mengakses isi objek agregat tanpa mengekspos representasi internalnya.
2. Menyediakan antarmuka terpadu untuk melintasi struktur pengumpulan yang berbeda, sehingga mendukung algoritma yang sama untuk beroperasi pada struktur pengumpulan yang berbeda.
3. Mengubah struktur pengumpulan di mana iterator berada saat melintasi dapat menyebabkan masalah (misalnya, item tidak diizinkan untuk dimodifikasi di foreach di C#).
teks
Secara umum iterasi, kita perlu memiliki setidaknya 2 metode, hasnext () dan next (), sehingga kita dapat melintasi semua objek. Pertama -tama mari kita beri contoh:
Salinan kode adalah sebagai berikut:
var agg = (function () {
indeks var = 0,
data = [1, 2, 3, 4, 5],
panjang = data.length;
kembali {
Berikutnya: function () {
elemen var;
if (! this.hasnext ()) {
kembali nol;
}
elemen = data [indeks];
indeks = indeks + 2;
elemen kembali;
},
hasnext: function () {
indeks pengembalian <panjang;
},
Rewind: function () {
indeks = 0;
},
saat ini: function () {
pengembalian data [indeks];
}
};
} ());
Metode penggunaan sama dengan di C#:
Salinan kode adalah sebagai berikut:
// Hasil iterasi adalah: 1, 3, 5
while (agg.hasnext ()) {
console.log (agg.next ());
}
Tentu saja, Anda juga dapat mengatur ulang data melalui metode tambahan dan kemudian melanjutkan dengan operasi lain:
Salinan kode adalah sebagai berikut:
// Mengatur ulang
agg.rewind ();
console.log (agg.current ()); // 1
Contoh aplikasi jQuery
Iterator yang sangat terkenal di jQuery adalah metode $ .Each. Melalui masing -masing kita dapat melewati fungsi tambahan dan kemudian mengulangi semua item item, misalnya:
Salinan kode adalah sebagai berikut:
$ .Each (['dudu', 'dudu', 'yogurt girl kecil', 'itu mm'], fungsi (indeks, nilai) {
console.log (index + ':' + value);
});
//atau
$ ('li'). masing -masing (fungsi (indeks) {
console.log (index + ':' + $ (this) .text ());
});
Meringkaskan
Skenario penggunaan iterator adalah: hasil set sering bervariasi dengan cara yang berbeda. Kami tidak ingin mengekspos struktur internalnya, tetapi kami juga membiarkan kode klien secara transparan mengakses elemen. Dalam hal ini, kita dapat menggunakan mode Iterator.