有没有更好的方法来查找迭代器是否已达到其最后一个值?

时间:2019-04-12 22:55:02

标签: javascript iterator

我可以这样做:

:

但是'next'变量显得笨拙。有更好的方法吗?

当我检查mySet对象时,我看到带有数组值的[[Entries]]键,但是我将如何访问它?

2 个答案:

答案 0 :(得分:1)

您可以使用while(!next.done),并且每次迭代只想使用next()

要弄清它是否是最后一个值,请将值存储在变量中,然后重新分配next,然后在处理值之前检查done

function* myGen(arr) {
  let i = -1;
  while (++i < arr.length) {
    yield arr[i] * 2;
  }
}

const it = myGen([1, 2, 3]);

let next = it.next();

while (!next.done) {
  const val = next.value;
  next = it.next();
  console.log('value:', val, ' is last = ', next.done);
}

console.log('done:', next.done)

答案 1 :(得分:0)

来自Mozilla的Doc

“ ... next()方法将返回具有两个属性的对象:value,即序列中的下一个值;以及 done,如果已消耗了序列中的最后一个值,则为true。 / strong>”

您的方法没有错。