На сайте lern.javascript.ru есть задача: "Создайте функцию filterRangeInPlace(arr, a, b), которая получает массив с числами arr и удаляет из него все числа вне диапазона a..b."
Вот код решения:
function filterRangeInPlace(arr, a, b) {
for (var i = 0; i < arr.length; i++) {
var val = arr[i];
if (val < a || val > b) {
arr.splice(i--, 1);
}
}
}
var arr = [5, 3, 8, 1];
filterRangeInPlace(arr, 1, 4);
alert( arr ); // [3, 1]
Так все понятно, кроме одного почему переменную i в строке arr.splice(i--, 1); уменьшают на один. Ведь нам по факту нужно убрать с позиции i 1 символ? Можете объяснить как это работает?