迭代器是一种特殊的对象。迭代器自带一个next()方法,我们取迭代器中的数据要用next方法。该方法返回一个对象{value:'迭代器元素',done:false},
如果done是false,表示迭代器还有元素,需要继续调用next迭代,如果done是true,则说明没有元素了。
取迭代器的内容用for of遍历
- function createIterator(arr){
- let i =0;
- return {
- next:function(){
- let done = i >= arr.length
- let value = done?undefined:arr[i++]
- return {
- value,done
- }
- }
- }
- }
- let iterator1 = createIterator([1,2,3,4,'a','b'])
- let values = iterator1.next()
- console.log(values) // { value: 1, done: false }
- // 获取所有值
- while(!values.done){
- values = iterator1.next()
- console.log(values)
- }
es6 Generator生成器可以返回一个迭代器函数 生成器就是函数前面加一个 * yield关键字创建迭代器的参数
- {
- function *createIterator(arr){
- for(var i =0;i<arr.length;i++){
- yield arr