为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2021-04-16 18:15:11
我可以做这个: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]]键,但是我该如何访问呢?
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您可以使用,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)


查看完整回答
反对 回复 2021-04-29
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

从Mozilla的Doc中

“ ... next()方法,该方法返回具有两个属性的对象:value,序列中的下一个值;完成,如果序列中的最后一个值已被消耗,则为true。 ”

您的方法没有错。


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信