myArr = [5, 3, 8, 1, 12, 4, 5, 6, 1, 54, 7];
function filterRangeInPlace(arr, min, max) {
for (var i = 0; i < arr.length; i += 1) {
if (arr[i] < min || arr[i] > max) {
arr.splice(i--, 1);
}
}
}
filterRangeInPlace(myArr, 2, 5); //[5, 3, 4, 5]
arr.splice(i--, 1)
? Зачем i--
? Не могу сообразить, спасибо. i--
затем, чтобы, удалив только что какой-то элемент вне диапазона, «текущий» элемент указывал на следующий.i=2
, текущий элемент arr[2]
это 8, вне диапазона. arr.splice(2,1)
удалит этот элемент. Теперь на месте arr[2]
оказывается уже 1.i--
, следующее значение i
в итерации цикла будет уже 3, а arr[3]
это 12 – выходит, "1" пропустили и даже не рассматривали.