Objek Iteratif JavaScript
Objek yang dapat diulir adalah objek yang dapat diulir (seperti array).
Objek yang dapat diulir dapat diakses dengan kode yang cepat dan efisien.
Objek yang dapat diulir dapat digunakan for..of
Keluarkan mengulangi untuk mengulangi.
Keluarkan for..of
for..of
Perintah digunakan untuk mengalir semula elemen objek yang dapat diulir.
Syarat
for (variable of iterable) { // blok kode yang akan dieksekusi }
Iterasi
Iterasi mudah untuk memahami.
Ini hanya berarti mengalir semula sekumpulan elemen.
Di bawah ini adalah beberapa contoh sederhana:
- Mengalir semula string
- Mengalir semula array
Mengalir semula string
boleh digunakan for..of
Mengalir semula elemen string:
实例
const name = "W3Schools"; for (const x of name) { // blok kode yang akan dieksekusi }
Mengalir semula array
boleh digunakan for..of
Mengalir semula elemen array:
Contoh 1
const letters = ["a","b","c"]; for (const x of letters) { // blok kode yang akan dieksekusi }
Contoh 2
const numbers = [2,4,6,8]; for (const x of numbers) { // blok kode yang akan dieksekusi }
Mengalir semula Set
boleh digunakan for..of
Mengalir semula elemen Set:
实例
const letters = new Set(["a","b","c"]); for (const x of letters) { // blok kode yang akan dieksekusi }
Keterangan:Kami akan menjelaskan Set dan Map secara mendalam di bab berikutnya.
mengelilingi Map
boleh digunakan for..of
mengelilingi elemen Map dalam lingkaran:
实例
const fruits = new Map([ ["apples", 500], ["bananas", 300], ["oranges", 200] }); for (const x of fruits) { // blok kode yang akan dieksekusi }
Iterator JavaScript
protokol iterator menentukan bagaimana menghasilkan nilai dari objek.satu siri nilai.
ketika objek melaksanakan next()
ketika objek melaksanakan methoditerator.
next()
method mesti mengembalikan objek yang mengandung 2 properti:
- value (nilai berikutnya)
- done (true atau false)
value |
nilai yang dipulangkan iterator. jika done adalah true, maka boleh diabaikan. |
done |
jika iterator telah selesai, maka true. jika iterator menghasilkan nilai baru, maka false. |
Perhatian:
Tekniknya, objek yang dapat diiterasi mesti melaksanakan method Symbol.iterator.
String, Array, TypedArray, Map dan Set adalah objek yang dapat diiterasi, kerana objek prototip mereka mempunyai method Symbol.iterator.
Objek yang dapat diiterasi yang disusun secara manual
Contoh yang ditunjukkan adalah objek yang dapat diiterasi yang disusun secara manual, ia akan berhenti, setiap kali dipanggil next()
akan kembalikan 10, 20, 30, 40, ...:
实例
// Objek yang dapat diiterasi yang disusun secara manual function myNumbers() { let n = 0; return { next: function() { n += 10; return { value: n, done: false }; } }; } // Membuat objek yang dapat diiterasi const n = myNumbers(); n.next(); // kembalikan 10 n.next(); // kembalikan 20 n.next(); // kembalikan 30
Masalahnya adalah:
Objek yang dapat diiterasi yang disusun secara manual tidak mendukung JavaScript for..of
.
objek yang dapat diiterasi yang mendukung statement for..of
Objek yang dapat diiterasi JavaScript adalah yang mempunyai Symbol.iterator objek.
Symbol.iterator ialah satupun yang mengembalikan next()
fungsi.
boleh digunakan kod berikut untuk mengiterasi objek yang dapat diiterasi:
for (const x of iterable) { }
实例
// 创建一个对象 myNumbers = {}; // 使其可迭代 myNumbers[Symbol.iterator] = function() { let n = 0; done = false; return { next() { n += 10; if (n == 100) { done = true; } return { value: n, done: done }; } }; }; // 现在可以使用 for..of for (const num of myNumbers) { // 任意代码 }
Symbol.iterator 方法会被 for..of
自动调用。
但我们也可以手动调用它:
实例
let iterator = myNumbers[Symbol.iterator](); while (true) { const result = iterator.next(); if (result.done) break; // 任意代码 }