【发布时间】:2019-04-03 04:44:40
【问题描述】:
通过显式调用可迭代来循环数组,示例代码如下:
let sampleArr = [4, 3, 56, 7, 7, 8, 9, 9];
let sampleArrIter = sampleArr[Symbol.iterator]();
while (true) {
let iterBody = sampleArrIter.next();
if (iterBody.done) {
//loop ends
break;
} else {
//loop continues - current element - iterBody.value
}
}
我希望能够检测到当前元素是数组中的最后一个元素,这样我就可以在循环结束后专门执行一个动作。当使用 for 循环时,我通过比较数组长度和当前索引来做到这一点。如何使用 Symbol.iterator 做到这一点?
【问题讨论】:
-
为什么不把后循环部分移到循环后面呢?
-
我还需要使用最后一个元素
-
为什么不在
if (iterBodu.done) { doLastThing(); break } else { doNormalThing(); }做最后一件事呢?这是一篇很棒的文章codeburst.io/… -
因为当iterBody.done为真时,iterBody.value == undefined
-
我知道我可以将最后一个元素值放入变量中以检查 iterBody.done 何时完成,但我正在寻找一个已经保存该值的地方,而不是我声明的变量
标签: javascript arrays loops iterator