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

我可以做这个:


let iter = mySet.values();

var val = iter.next();

var next = iter.next();

while(val.value){

  if(!next.done){

    // do something that I want to do to the last element

  }

  val = next;

  next  = iter.next();

}

但“下一个”变量似乎很笨拙。有没有更好的办法?


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


慕码人8056858
浏览 224回答 2
2回答

MM们

您可以使用,while(!next.done)并且next()每个迭代只想使用一次。要弄清它是否是最后一个值,请将值存储在变量中,然后重新分配next,然后done在处理值之前检查function* myGen(arr) {&nbsp; let i = -1;&nbsp; while (++i < arr.length) {&nbsp; &nbsp; yield arr[i] * 2;&nbsp; }}const it = myGen([1, 2, 3]);let next = it.next();while (!next.done) {&nbsp; const val = next.value;&nbsp; next = it.next();&nbsp; console.log('value:', val, ' is last = ', next.done);}console.log('done:', next.done)

慕工程0101907

从Mozilla的Doc中:“ ... next()方法,该方法返回具有两个属性的对象:value,序列中的下一个值;完成,如果序列中的最后一个值已被消耗,则为true。&nbsp;”您的方法没有错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript