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" пропустили и даже не рассматривали.