Обнаружение последней итерации в цикле FOR OF в JavaScript ES6 - PullRequest
0 голосов
/ 09 января 2019

Существует несколько способов определения последней итерации для и для цикла .

Но как это сделать, если найти последнюю итерацию в для цикла . Я не смог найти это в документации.

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

Ответы [ 5 ]

0 голосов
/ 09 января 2019

Одним из подходов является использование Array.prototype.entries () :

for (const [i, value] of arr.entries()) {
    if (i === arr.length - 1) {
        // do your thing
    }
}

Другой способ - вести подсчет вне цикла, как предложил Шидерс. Я не думаю, что вы хотите проверить indexOf(item), хотя, потому что это создает проблему, если последний элемент дублируется где-то еще в массиве ...

0 голосов
/ 09 января 2019

Кажется, что-то не подходит для этого ... для этого. Кажется, есть два обходных пути:

Если вы можете, просто переместите маркер в конец массива и воздействуйте на него, как показано ниже:

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

В качестве альтернативы, вы можете использовать нижеприведенное, чтобы получить индекс, который вы можете использовать в тандеме с Array.length

введите описание ссылки здесь

0 голосов
/ 09 января 2019

Вы можете нарезать массив и пропустить последний элемент.

var array = [1, 2, 3],
    item;
    
for (item of array.slice(0, -1)) {
    console.log(item)
}
0 голосов
/ 09 января 2019

Если вы хотите изменить поведение вашего цикла на основе определенного индекса, то, вероятно, будет хорошей идеей использовать явный индекс в вашем цикле for.

Если вы просто хотите пропустить последний элемент, вы можете сделать что-то вроде

for (item of array.slice(0, -1)) {
    //do something for every element except last
}
0 голосов
/ 09 января 2019

Вы можете оставить счетчик вне цикла:

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

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