Lời gọi iterator trong JavaScript
Mỗi lời gọi tuần tự của iterator phải trả về một đối tượng có cấu trúc đặc biệt. Hãy cùng xem xét cấu trúc này. Giả sử chúng ta có một mảng:
let arr = [1, 2, 3];
Lấy iterator của mảng vào một biến:
let iter = arr[Symbol.iterator]();
Bây giờ biến này chứa một đối tượng
với phương thức next. Phương thức này sẽ trả về
một đối tượng với khóa value, chứa
giá trị của phần tử, và khóa done,
chứa thông tin về việc việc duyệt
đã kết thúc hay chưa:
console.log( iter.next() ); // {value: 1, done: false}
Các lời gọi tuần tự phương thức next
sẽ mỗi lần đưa ra phần tử
tiếp theo:
console.log( iter.next() ); // {value: 1, done: false}
console.log( iter.next() ); // {value: 2, done: false}
console.log( iter.next() ); // {value: 3, done: false}
Và ngay khi các phần tử kết thúc, chúng ta sẽ thấy các giá trị sau:
console.log( iter.next() ); // {value: undefined, done: true}
Lấy iterator của collection Map.
Lần lượt gọi nó,
cho đến khi các phần tử của collection kết thúc.
Lấy iterator của collection NodeList.
Lần lượt gọi nó,
cho đến khi các phần tử của collection kết thúc.
Lấy iterator của collection HTMLCollection.
Lần lượt gọi nó,
cho đến khi các phần tử của collection kết thúc.