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

时间:2019-01-09 19:10:08

标签: javascript loops for-loop ecmascript-6 iterator

有多种方法可以找出 for for 循环的最后一次迭代。

但是,如果在 for 循环中找到最后一个迭代,该怎么办。我在文档中找不到。

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

7 个答案:

答案 0 :(得分:1)

您可以在循环外保留一个计数器:

const data = [1, 2, 3];
let iterations = data.length;

for (item of data)
{
    console.log(item);
    
    if (--iterations <= 0)
    {
        console.log("Last iteration...");
    }
}

答案 1 :(得分:1)

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

如果您只想跳过最后一个元素,则可以执行类似的操作

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

答案 2 :(得分:0)

您可以切片数组并省略最后一个元素。

var array = [1, 2, 3],
    item;
    
for (item of array.slice(0, -1)) {
    console.log(item)
}

答案 3 :(得分:0)

似乎对此没有任何要求。 似乎有两种解决方法:

如果可以的话,只需将一个标记推到数组的末尾并对该标记进行操作,就像这样:

myArray.push('FIN')
for (el of myArray){
    if (el === 'FIN')
        //ending code
}

或者,您可以使用以下代码获取可以与Array.length串联使用的索引

enter link description here

答案 4 :(得分:0)

一种方法是使用Array.prototype.entries()

personal/profile

另一种方法是像Shidersz建议的那样将计数保持在循环之外。我认为您不希望检查for (const [i, value] of arr.entries()) { if (i === arr.length - 1) { // do your thing } } ,因为如果最后一项在数组中的其他位置重复了,那会带来问题...

答案 5 :(得分:0)

查找最后一个循环并在迭代过程中摆脱最后一个逗号插入的最简单方法是将数组的长度与其最后一项的索引进行比较。

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');
    }
}

答案 6 :(得分:0)

pre> 
const chain = ['ABC', 'BCA', 'CBA'];
let findOut;
for (const lastIter of chain) {
    findOut = lastIter;       //Last iteration value stored in each iteration. 
} 

console.log(findOut);

enter code here
CBA