Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah Iterators dan Iterables dalam JavaScript?
Dalam JavaScript, iterators dan iterables adalah konsep asas yang digunakan untuk melintasi koleksi data, seperti array, rentetan, dan struktur data yang lebih kompleks.
Iterables adalah objek yang boleh diulang, bermakna anda boleh melalui unsur -unsur mereka satu demi satu. Yang boleh dimakan dalam JavaScript mesti melaksanakan kaedah @@iterator
, yang sering dilambangkan sebagai Symbol.iterator
. Apabila dipanggil, kaedah ini harus mengembalikan iterator untuk objek tersebut.
Sebagai contoh, tatasusunan dan rentetan terbina dalam JavaScript. Anda boleh menggunakan for...of
gelung terus ke atas ini untuk melelehkan unsur -unsur mereka:
<code class="javascript">const array = [1, 2, 3, 4, 5]; for (const value of array) { console.log(value); // Outputs: 1, 2, 3, 4, 5 }</code>
Iterator , sebaliknya, adalah objek yang menjejaki di mana anda berada dalam lelaran atas yang boleh dimakan. Objek iterator mesti mempunyai kaedah next()
, yang mengembalikan objek dengan dua sifat: value
, yang merupakan nilai seterusnya dalam urutan, dan done
, boolean yang menunjukkan sama ada lelaran telah selesai.
Anda boleh menggunakan Iterator secara manual seperti ini:
<code class="javascript">const array = [1, 2, 3, 4, 5]; const iterator = array[Symbol.iterator](); console.log(iterator.next()); // { value: 1, done: false } console.log(iterator.next()); // { value: 2, done: false } console.log(iterator.next()); // { value: 3, done: false }</code>
Memahami perbezaan antara kedua -dua konsep ini adalah penting untuk manipulasi data yang berkesan dalam JavaScript.
Anda boleh menggunakan iterator untuk gelung melalui array dengan secara manual memanggil kaedah next()
pada objek iterator yang dikembalikan oleh @@iterator
kaedah array. Inilah contoh langkah demi langkah bagaimana melakukan ini:
<code class="javascript">const array = [10, 20, 30, 40, 50]; const iterator = array[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); // Outputs: 10, 20, 30, 40, 50 result = iterator.next(); }</code>
Pendekatan ini memberi anda kawalan halus ke atas proses lelaran. Anda juga boleh menggunakan for...of
gelung, yang secara dalaman menggunakan mekanisme iterator untuk gelung melalui array:
<code class="javascript">const array = [10, 20, 30, 40, 50]; for (const value of array) { console.log(value); // Outputs: 10, 20, 30, 40, 50 }</code>
for...of
Loop adalah cara yang lebih mudah dan biasa digunakan untuk melangkah ke atas ayat.
Perbezaan utama antara iterator dan pengarah dalam JavaScript terletak pada peranan dan fungsi mereka semasa proses lelaran.
Symbol.iterator
, yang mengembalikan iterator. Tujuannya adalah untuk menyediakan cara untuk mengakses unsur -unsurnya secara berurutan.next()
untuk mendapatkan elemen seterusnya dalam urutan. Setiap panggilan ke next()
mengembalikan objek dengan value
dan sifat done
.Berikut adalah ilustrasi ringkas mengenai konsep -konsep ini:
<code class="javascript">// An array is an iterable const array = [1, 2, 3]; // Getting an iterator from the iterable const iterator = array[Symbol.iterator](); // Using the iterator 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 }</code>
Secara ringkasnya, ia dapat memberikan mekanisme untuk mendapatkan iterator, sementara iterator melakukan lelaran dengan menghasilkan unsur -unsur berturut -turut yang dapat dicapai.
JavaScript termasuk beberapa jenis data terbina dalam yang boleh dilalui. Berikut adalah beberapa contoh:
for...of
gelung untuk melangkah ke atas unsur -unsur array.<code class="javascript">const fruits = ['apple', 'banana', 'cherry']; for (const fruit of fruits) { console.log(fruit); // Outputs: apple, banana, cherry }</code>
<code class="javascript">const message = "Hello"; for (const char of message) { console.log(char); // Outputs: H, e, l, l, o }</code>
for...of
Loop melangkah ke atas entri nilai utama.<code class="javascript">const map = new Map([['a', 1], ['b', 2], ['c', 3]]); for (const [key, value] of map) { console.log(key, value); // Outputs: a 1, b 2, c 3 }</code>
for...of
gelung melewati nilai -nilai dalam set.<code class="javascript">const set = new Set([1, 2, 3, 4, 5]); for (const value of set) { console.log(value); // Outputs: 1, 2, 3, 4, 5 }</code>
Ini iterables terbina dalam menjadikannya mudah untuk mengendalikan koleksi data dalam JavaScript menggunakan mekanisme lelaran yang disediakan oleh bahasa.
Atas ialah kandungan terperinci Apakah Iterators dan Iterables dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!