Rumah hujung hadapan web tutorial js Penjelasan terperinci tentang iterator dan penjana dalam kemahiran JavaScript_javascript

Penjelasan terperinci tentang iterator dan penjana dalam kemahiran JavaScript_javascript

May 16, 2016 pm 04:32 PM
javascript penjana Iterator

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():

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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.

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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:

Salin kod Kod adalah seperti berikut:

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.

Salin kod Kod adalah seperti berikut:

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.

Salin kod Kod adalah seperti berikut:

Range.prototype.__iterator__ = function(){
        kembalikan RangeIterator baharu(ini);
};

Setelah kami melengkapkan lelaran tersuai kami, kami boleh mengulangi pada julat contoh:

Salin kod Kod adalah seperti berikut:

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

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 pm 02:54 PM

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 melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

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

Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Dec 17, 2023 pm 12:09 PM

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

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 am 09:39 AM

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 JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

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 Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

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

Penjana Seni Animasi AI Percuma Terbaik Penjana Seni Animasi AI Percuma Terbaik Feb 19, 2024 pm 10:50 PM

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

Penjelasan terperinci tentang pelaksanaan dan penggunaan iterator Golang Penjelasan terperinci tentang pelaksanaan dan penggunaan iterator Golang Mar 17, 2024 pm 09:21 PM

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

See all articles