数组有一个内置的 map 函数,其作用类似于迭代器。
[1,2,3].map(function(input){console.log(input)});
标准输出:
1
2
3
最坏的情况是你可以很容易地设计一个迭代器对象,但没有完全测试它,但如果有任何错误,你应该能够快速让它工作。
var Iterator = function(arr){ return {
index : -1,
hasNext : function(){ return this.index <= arr.length; },
hasPrevious: function(){ return this.index > 0; },
current: function(){ return arr[ this["index"] ]; },
next : function(){
if(this.hasNext()){
this.index = this.index + 1;
return this.current();
}
return false;
},
previous : function(){
if(this.hasPrevious()){
this.index = this.index - 1
return this.current();
}
return false;
}
}
};
var iter = Iterator([1,2,3]);
while(iter.hasNext()){
console.log(iter.next());
}