@fleshik

Почему метод pop удаляет не все елементы массива?

Подскажите почему в примере метод pop удаляет только 4 елемента массива и потом останавливается, почему не удаляются остальные числа?
const ar = [3,8,4,6,7,9,5]
for(const number of ar) {
  console.log(ar.pop())
}
  • Вопрос задан
  • 109 просмотров
Решения вопроса 3
Wispik
@Wispik
1. Нельзя итерироваться по объекту и одновременно изменять его
2. pop удаляет с конца, а for of идет по массиву сначала

Первая итерация цикла number=3, pop удаляет с конца, то есть 5
вторая итерация number=8, pop удаляет 9
и так далее
когда number=6(четвертая итерация), 6 - это последний элемент массива, так как остальные удалил pop
Ответ написан
@historydev Куратор тега JavaScript
Редактирую файлы с непонятными расширениями
const ar = [3,8,4,6,7,9,5]
while(ar.length > 0) {
  console.log(ar.pop())
}
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Потому что вы изменяете массив, по которому итерируете. В итоге у вас длина массива становится 7 -> 6 -> 5 -> 4 -> 3 и на четвёртой итерации (т.е. для элемента "6") вы достигаете конца и цикл останавливается, удалив с конца 4 элемента ("5", "9", "7" и "6").
В целом код бессмысленный и глубоко разбираться, как он работает, не нужно, если это не учебный пример "как не надо".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 12:16
60000 руб./за проект
23 нояб. 2024, в 09:59
2000 руб./в час
23 нояб. 2024, в 08:36
2000 руб./за проект