@anton12333
Изучаю JavaScript

Ребята, объясните пожалуйста как это работает?

function filterRangeInPlace(arr, a, b) {

  for (let i = 0; i < arr.length; i++) {
    let val = arr[i];

    // удалить, если за пределами интервала
    if (val < a || val > b) {
      arr.splice(i, 1);
    i--;
    }
  }

}

let arr = [5, 3, 8, 1];

filterRangeInPlace(arr, 1, 4); // удалены числа вне диапазона 1..4

alert( arr ); // [3, 1]

Что делает i--?????
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
Все очень просто. Смотрите, у нас есть массив const numbers = [1, 2, 4, 8];. Мы проходим по нему циклом for, при этом заранее не сохраняя длину массива, таким образом, если удалять в цикле каждый раз текущий индекс, то при следующей итерации будет пересчитано условие i < arr.length, но 1 элемент то мы удалили, и следовательно цикл завершится раньше. Чтобы этого не произошло, i уменьшают на 1. В тот момент, когда удаляется элемент, i при следующей итерации «остается на месте».
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Это унарный оператор. Он уменьшает переменную на единицу
Википедия
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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