


Penjelasan terperinci tentang iterator dan penjana dalam kemahiran JavaScript_javascript
Memproses setiap item dalam koleksi ialah operasi yang sangat biasa JavaScript menyediakan banyak cara untuk mengulang koleksi, daripada mudah untuk dan untuk setiap gelung kepada peta(), penapis() dan kefahaman tatasusunan . Dalam JavaScript 1.7, iterator dan penjana membawa mekanisme lelaran baharu kepada sintaks JavaScript teras, dan juga menyediakan mekanisme untuk menyesuaikan gelagat untuk...dalam dan untuk setiap gelung.
Iterator
Lelaran ialah objek yang mengakses satu elemen dalam urutan koleksi pada satu masa dan menjejaki kedudukan semasa lelaran dalam jujukan. Dalam JavaScript, iterator ialah objek yang menyediakan kaedah next() yang mengembalikan elemen seterusnya dalam jujukan. Kaedah ini membuang pengecualian StopIteration apabila semua elemen dalam urutan telah dilalui.
Setelah objek iterator dicipta, ia boleh dipanggil secara eksplisit dengan memanggil next() berulang kali, atau secara tersirat menggunakan JavaScript untuk...dalam dan untuk setiap gelung.
Iterators mudah untuk lelaran ke atas objek dan tatasusunan boleh dibuat menggunakan Iterator():
var lang = { nama: 'JavaScript', tahun lahir: 1995 };
var it = Iterator(lang);
Setelah pemulaan selesai, kaedah next() boleh dipanggil untuk mengakses pasangan nilai kunci objek dalam urutan:
var pair = it.next(); //Pasangan kunci-nilai ialah ["name", "JavaScript"]
pair = it.next(); //Pasangan kunci-nilai ialah ["hari lahir", 1995]
pair = it.next(); //Pengecualian `StopIteration` dilemparkan
Gelung untuk…dalam boleh digunakan dan bukannya memanggil kaedah seterusnya() secara eksplisit. Gelung ditamatkan secara automatik apabila pengecualian StopIteration dilemparkan.
var it = Iterator(lang);
untuk (pasangan var di dalamnya)
Print(pair); //Keluarkan satu [kunci, nilai] pasangan nilai kunci di dalamnya setiap kali
Jika anda hanya mahu mengulang nilai kunci objek, anda boleh menghantar parameter kedua ke fungsi Iterator() dengan nilai benar:
var it = Iterator(lang, true);
untuk (kunci var di dalamnya)
Print(key); //Nilai kunci keluaran setiap kali
Satu faedah menggunakan Iterator() untuk mengakses objek ialah sifat tersuai yang ditambahkan pada Object.prototype tidak akan disertakan dalam objek jujukan.
Iterator() juga boleh digunakan pada tatasusunan:
var langs = ['JavaScript', 'Python', 'Haskell'];
var it = Iterator(langs);
untuk (pasangan var di dalamnya)
print(pair); //Setiap lelaran mengeluarkan [indeks, bahasa] pasangan nilai kunci
Sama seperti melintasi objek, menghantar benar sebagai parameter kedua akan menyebabkan traversal menjadi indeks tatasusunan:
var langs = ['JavaScript', 'Python', 'Haskell'];
var it = Iterator(langs, true);
untuk (var i di dalamnya)
print(i); //Output 0, kemudian 1, kemudian 2
Gunakan kata kunci let untuk menetapkan indeks dan nilai untuk menyekat pembolehubah di dalam gelung, dan anda juga boleh menggunakan Tugasan Pemusnahan:
var langs = ['JavaScript', 'Python', 'Haskell'];
var it = Iterators(langs);
untuk (biar [i, lang] di dalamnya)
print(i ': ' lang); //Output "0: JavaScript" dsb.
Isytiharkan lelaran tersuai
Sesetengah objek yang mewakili koleksi elemen harus diulang dengan cara yang ditentukan.
1 Mengulang objek yang mewakili julat harus mengembalikan nombor yang terkandung dalam julat satu demi satu
2. Nod daun pokok boleh diakses menggunakan depth-first atau breadth-first
3. Lelaran pada objek yang mewakili hasil pertanyaan pangkalan data harus dikembalikan baris demi baris, walaupun keseluruhan set hasil belum dimuatkan ke dalam tatasusunan tunggal
4. Peulang yang bertindak pada jujukan matematik tak terhingga (seperti jujukan Fibonacci) harus mengembalikan hasil satu demi satu tanpa mencipta struktur data panjang tak terhingga
JavaScript membolehkan anda menulis logik lelaran tersuai dan menggunakannya pada objek
Kami mencipta objek Julat mudah yang mengandungi nilai rendah dan tinggi:
Julat fungsi(rendah, tinggi){
This.low = rendah;
This.high = tinggi;
}
Kini kami mencipta lelaran tersuai yang mengembalikan jujukan yang mengandungi semua integer dalam julat. Antara muka iterator memerlukan kami menyediakan kaedah next() untuk mengembalikan elemen seterusnya dalam jujukan atau membuang pengecualian StopIteration.
fungsi RangeIterator(julat){
This.range = julat;
This.current = this.range.low;
}
RangeIterator.prototype.next = function(){
Jika (ini.semasa > julat.tinggi ini)
baling Hentian Lelaran;
lain
kembalikan this.current ;
};
RangeIterator kami diwujudkan dengan contoh julat dan mengekalkan sifat semasa untuk menjejaki kedudukan jujukan semasa.
Akhir sekali, untuk RangeIterator digabungkan dengan Range, kita perlu menambah kaedah __iterator__ khas untuk Range. Ia akan dipanggil apabila kami cuba melelarkan Julat dan harus mengembalikan contoh RangeIterator yang melaksanakan logik lelaran.
Range.prototype.__iterator__ = function(){
kembalikan RangeIterator baharu(ini);
};
Setelah kami melengkapkan lelaran tersuai kami, kami boleh mengulangi pada julat contoh:
julat var = Julat baharu(3, 5);
untuk (var i dalam julat)
print(i); //Output 3, kemudian 4, kemudian 5
Penjana: cara yang lebih baik untuk membina iterator
Walaupun iterator tersuai ialah alat yang berguna, perancangan yang teliti diperlukan semasa menciptanya kerana keadaan dalaman mereka perlu dikekalkan dengan jelas.
Penjana menyediakan fungsi yang sangat berkuasa: ia membolehkan anda menentukan fungsi yang mengandungi algoritma lelarannya sendiri, dan ia boleh mengekalkan keadaannya sendiri secara automatik.
Penjana ialah fungsi khas yang boleh berfungsi sebagai kilang lelaran. Jika fungsi mengandungi satu atau lebih ungkapan hasil, ia dipanggil penjana (Nota Penterjemah: Node.js juga perlu menambah * di hadapan nama fungsi untuk menunjukkannya).
Nota: Hanya blok kod yang terkandung dalam

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Jika anda tidak sabar-sabar untuk mencari penjana seni animasi AI percuma teratas, anda boleh menamatkan carian anda. Dunia seni anime telah menawan penonton selama beberapa dekad dengan reka bentuk watak yang unik, warna yang menawan dan plot yang menawan. Walau bagaimanapun, mencipta seni anime memerlukan bakat, kemahiran, dan banyak masa. Walau bagaimanapun, dengan pembangunan kecerdasan buatan (AI) yang berterusan, anda kini boleh meneroka dunia seni animasi tanpa perlu mendalami teknologi yang kompleks dengan bantuan penjana seni animasi AI percuma yang terbaik. Ini akan membuka kemungkinan baharu untuk anda melancarkan kreativiti anda. Apakah penjana seni anime AI? Penjana Seni Animasi AI menggunakan algoritma canggih dan teknik pembelajaran mesin untuk menganalisis pangkalan data karya animasi yang luas. Melalui algoritma ini, sistem mempelajari dan mengenal pasti gaya animasi yang berbeza

Golang ialah bahasa yang disusun secara statik yang pantas dan cekap Sintaksnya yang ringkas dan prestasi yang berkuasa menjadikannya sangat popular dalam bidang pembangunan perisian. Di Golang, iterator (Iterator) ialah corak reka bentuk yang biasa digunakan untuk melintasi elemen dalam koleksi tanpa mendedahkan struktur dalaman koleksi. Artikel ini akan memperkenalkan secara terperinci cara melaksanakan dan menggunakan iterator di Golang, dan membantu pembaca memahami dengan lebih baik melalui contoh kod tertentu. 1. Definisi iterator Dalam Golang, iterator biasanya terdiri daripada antara muka dan pelaksanaan
