Задание:
Напишите функцию filterRangeInPlace(arr, a, b), которая принимает массив arr и удаляет из него все значения кроме тех, которые находятся между a и b. То есть, проверка имеет вид a ≤ arr[i] ≤ b.
Функция должна изменять принимаемый массив и ничего не возвращать.
Например:
let arr = [5, 3, 8, 1];
filterRangeInPlace(arr, 1, 4); // удалены числа вне диапазона 1..4
alert( arr ); // [3, 1]
Мой код:
function filterRangeInPlace(arr, a, b) {
arr = arr.filter(function(item) {
if (item >= a && item <= b) return true;
else return false;
});
let arr = [5, 3, 8, 1];
filterRangeInPlace(arr, 1, 4);
alert( arr ); //5, 3, 8, 1
}
Я знаю, что аргументы в функцию передаются по значению, но массивы ведь передаются по ссылке, так? Тогда почему массив не меняется?