一、Iterator
JavaScript到目前为止有四种集合类型,数组、对象、Map、Set。
这四种集合的遍历方案是不一致的,数组、Map和Set 可以使用forEach 和for循环 来进行遍历,对象需要使用for …in 遍历。
若数据存储过程中,不是使用单一的集合而是使用这几种的交叉来完成的,例如:数组中有对象,对象中Set,Set中有map…,这时,就不能使用统一的遍历方式来进行数据遍历。
能不能提供一种统一的遍历方案,来对四种集合进行遍历?
Iterator(遍历器、迭代器),它的诞生就是为了解决这个问题的。它可以为集合提供一种统一的接口机制,来遍历不同的集合数据。
模拟iterator接口:
//模拟Iterator机制(遍历器)
function makeIterator(array) {
var nextIndex = 0;//遍历过程中的索引
return {
next: function () {
if (nextIndex < array.length) {
return {
value: array[nextIndex++], done: false };
}
return {
value: undefined, done: true };
}<