迭代器

一、迭代昰什么?
从一个数据集合中按照一定的顺序,不断的取出数据的过程

迭代与遍历的区别 :

  • 迭代强调的是依次取出,不能确定取出的有多少,也不能保证把数据全部取完

迭代器的特点:

  • 迭代器有得到下一个数据的能力
  • 判断是否有后续数据的能力
  • 数组存储的数据是有限的,迭代器只关心下一个

二、语法
迭代器是一个特殊的对象,它具有一些专门为迭代过程设计的专有接口,所有迭代器都有一个 next() 方法,每次调用都放回一个结果对象。
两个属性:

  • value :表示下一个将要返回的值;
  • done :判断迭代是否完成,返回布尔类型的值

迭代器还会保存一个内部指针,用来指向当前集合中值的位置,每调用一次 next() 方法,都会返回下一个可用的值。

function createIterator(items) {
    var i = 0;
    return {
        next: function() {
            var done = (i >= items.length);
            var value = !done ? items[i++] : undefined;
            return {
                done: done,
                value: value
            };
        }
    };
}
var iterator = createIterator([1, 2, 3]);
console.log(iterator.next()); // "{ value: 1, done: false }"
console.log(iterator.next()); // "{ value: 2, done: false }"
console.log(iterator.next()); // "{ value: 3, done: false }"
console.log(iterator.next()); // "{ value: undefined, done: true }"
// 之后的所有调用
console.log(iterator.next()); // "{ value: undefined, done: true }"

在es6中,如果对象具有知名符号属性Symbol.iterator,则表示对象可以迭代
在es6及以后,数组可以直接创建迭代对象。

 const arr = [468, 4685, 456, 4568, 351, 561, 456, 4564, 96];
  const iter = arr[Symbol.iterator]();
  let result = iter.next();
  while (!result.done) {
      console.log(result.value);
      result = iter.next();
  }

三、for of循环
for of 循环,专门用来遍历迭代的对象的,不是可迭代的对象不能使用for of遍历。

let values = [1,2,3];
for(let num of values) {
  console.log(num)
}

for of循环每执行一次都会调用可迭代对象的 next() 方法,并将迭代器返回的结果对象的 value 属性存储在一个变量中,循环将持续执行直到返回对象的 done 属性的值为 true。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值