@Romario5891

Почему не изменяется массив?

Добрый день. Подскажите пожалуйста почему в таком коде не изменяется исходный массив
'use strict';

function filterRange(arr, a, b){
  for (let i= 0; i<arr.length; i++){
      if (arr[i] < a || arr[i] >b){
          arr.splice(arr[i], 1);
        
      }
  }
}
let arr = [5, 3, 8, 1];
filterRange(arr, 1, 4);
console.log(arr);
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
@James026
Просто у тебя нечего вырезать из массива)
arr.splice(arr[i], 1); у тебя тут получается
1) arr.splice(5, 1);
2) arr.splice(8, 1);

Что выходит за границы массива)

Замени в коде arr.splice(arr[i], 1); на arr.splice(i, 1); и ты увидишь что все ок
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Laweb
Веб-разработчик
Попробуйте так

function filterRange(arr, a, b){
for (let i= 0; i if (arr[i] < a || arr[i] >b){
arr.splice(arr[i], 1);

}
}

return arr;
}
let arr = [5, 3, 8, 1];
arr = filterRange(arr, 1, 4);
console.log(arr);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы