@danyvasnafig

Почему исходный массив не изменяется когда мы его перезаписываем внутри функции?

Почему при приравнивании внутри функции arr = arr.filter... не изменяется массив исходный? Я же к нему обращаюсь и перезаписываю его, но при alert-е выводятся исходные значение, при это если написать alert внутри функции, то все корректно.
При вызове arr.filter получаем новый массив из удовлетворяющих условие элементов и записываем его в переменную arr, тем самым перезаписав ее. Почему не работает?
let arr = [5, 3, 8, 1];
function filterRangeInPlace(arr,val1,val2) {
  arr = arr.filter(el => (val1 <= el && el <= val2));  
}

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

alert( arr) ; // [3, 1]
  • Вопрос задан
  • 113 просмотров
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
let arr = [5, 3, 8, 1];
function filterRangeInPlace(innerArr,val1,val2) {
  innerArr = innerArr.filter(el => (val1 <= el && el <= val2));  
}

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

alert( arr) ; // [3, 1]
Так должно быть понятнее.
Ответ написан
Комментировать
@danyvasnafig Автор вопроса
У меня одинаковые имя переменной в скобках и название исходного массива, из-за этого были проблемы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы