Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测ES6 javascript中FOR OF循环的最后一次迭代_Javascript_Loops_For Loop_Ecmascript 6_Iterator - Fatal编程技术网

检测ES6 javascript中FOR OF循环的最后一次迭代

检测ES6 javascript中FOR OF循环的最后一次迭代,javascript,loops,for-loop,ecmascript-6,iterator,Javascript,Loops,For Loop,Ecmascript 6,Iterator,有多种方法可以在循环中找到for和for…的最后一次迭代。但是如何在for…of循环中找到最后一次迭代呢。我在文件中找不到 for (item of array) { if (detect_last_iteration_here) { do_not_do_something } } 一种可能的方法是在循环外初始化计数器,并在每次迭代时将其递减: const data=[1,2,3]; 让迭代次数=data.length; (数据项) { if(!--迭代次数)

有多种方法可以在循环中找到for和for…的最后一次迭代。但是如何在
for…of
循环中找到最后一次迭代呢。我在文件中找不到

for (item of array) {
    if (detect_last_iteration_here) {
        do_not_do_something
    }
}

一种可能的方法是在循环外初始化计数器,并在每次迭代时将其递减:

const data=[1,2,3];
让迭代次数=data.length;
(数据项)
{
if(!--迭代次数)
log(item+“=>这是最后一次迭代…”);
其他的
控制台日志(项目);
}
.as控制台{背景色:黑色!重要;颜色:石灰;}

.作为控制台包装{max height:100%!important;top:0;}
您可以分割数组并省略最后一个元素

var数组=[1,2,3],
项目;
对于(数组项。切片(0,-1)){
console.log(项目)

}
如果您希望基于特定索引更改循环行为,那么在for循环中使用显式索引可能是一个好主意

如果只想跳过最后一个元素,可以执行以下操作

for (item of array.slice(0, -1)) {
    //do something for every element except last
}

似乎没有任何与此相关的规范。 似乎有两种解决办法:

如果可以,只需将一个标记推到数组的末尾并对该标记执行操作,如下所示:

myArray.push('FIN')
for (el of myArray){
    if (el === 'FIN')
        //ending code
}
或者,您也可以使用下面的命令来获取一个索引,该索引可以与Array.length一起使用

一种方法是使用:


另一种方法是像Shidersz建议的那样将计数保持在循环之外。我认为您不想检查
indexOf(item)
,因为如果最后一个项在数组中的其他地方重复,则会出现问题…

查找最后一个循环的最简单方法,比如说,在iterration期间去掉最后一个逗号插入,就是将数组的长度与其最后一个项的索引进行比较

const arr = ["verb", "noun", "pronoun"];

for (let item of arr) {
    if (arr.length -1 !== arr.indexOf(item)) {
        console.log('With Commas');
    } else {
        console.log('No Commars');
    }
}

这是不可能的——迭代器可以是无限的。只有在检查下一个元素后,才知道它是否是最后一个元素。你到底需要它做什么?这将有一个n阶乘的运行时。
const arr = ["verb", "noun", "pronoun"];

for (let item of arr) {
    if (arr.length -1 !== arr.indexOf(item)) {
        console.log('With Commas');
    } else {
        console.log('No Commars');
    }
}