Сделать для... чтобы пропустить из цикла последний элемент
В случае, если существует двумерный массив, который повторяется с использованием for...of
Как лучше всего пропустить последний элемент?
Например, имея массив arr
нормальным подходом будет:
for(const subArray of arr) { ... }
чтобы пропустить последний элемент, он может быть использован перед циклом: arr.slice(0, -1);
которая работает нормально, но удаляет те данные, которых следует избегать.
Есть ли способ заставить его пропустить последний элемент без потери данных?
2 ответа
slice()
не меняет массив, но возвращает новый массив (в отличие splice()
, который изменяет массив), поэтому безопасно использовать:
for (const subArray of arr.slice(0, -1)) { ... }
Вы также можете использовать генератор:
function* skipLast(array, numOfEntries = 1) {
for(let i = 0; i < array.length - numOfEntries; i++)
yield array[i];
}
Можно использовать как:
for(const entry of skipLast(array))