Сделать для... чтобы пропустить из цикла последний элемент

В случае, если существует двумерный массив, который повторяется с использованием 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)) 
Другие вопросы по тегам