Задать вопрос
@fleshik

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

Подскажите почему в примере метод pop удаляет только 4 елемента массива и потом останавливается, почему не удаляются остальные числа?
const ar = [3,8,4,6,7,9,5]
for(const number of ar) {
  console.log(ar.pop())
}
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 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").
В целом код бессмысленный и глубоко разбираться, как он работает, не нужно, если это не учебный пример "как не надо".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы