Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah Iterators dan Iterables dalam JavaScript?

Apakah Iterators dan Iterables dalam JavaScript?

Robert Michael Kim
Robert Michael Kimasal
2025-03-18 13:51:32342semak imbas

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.

Bagaimanakah saya boleh menggunakan Iterator untuk gelung melalui array di 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.

Apakah perbezaan antara iterator dan iterator di JavaScript?

Perbezaan utama antara iterator dan pengarah dalam JavaScript terletak pada peranan dan fungsi mereka semasa proses lelaran.

  • ITERVERT: Yang boleh dimakan adalah objek yang mewakili koleksi data dan boleh diulangi. Ia mempunyai kaedah Symbol.iterator , yang mengembalikan iterator. Tujuannya adalah untuk menyediakan cara untuk mengakses unsur -unsurnya secara berurutan.
  • Iterator: Iterator adalah objek yang memudahkan proses lelaran sebenar. Ia menjejaki kedudukan semasa dalam lelaran dan menyediakan kaedah 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.

Bolehkah anda memberikan contoh-contoh terbina dalam JavaScript?

JavaScript termasuk beberapa jenis data terbina dalam yang boleh dilalui. Berikut adalah beberapa contoh:

  1. Array:
    Array adalah salah satu yang paling biasa digunakan dalam JavaScript. Anda boleh menggunakan 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>
  1. Rentetan:
    Rentetan juga diluluskan, di mana setiap lelaran menghasilkan watak dalam rentetan.
 <code class="javascript">const message = "Hello"; for (const char of message) { console.log(char); // Outputs: H, e, l, l, o }</code>
  1. Peta:
    Peta adalah koleksi pasangan nilai utama. 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>
  1. Tetapkan:
    Sets adalah koleksi nilai -nilai yang unik dan boleh didapati. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn