Задать вопрос
@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 Простой Комментировать
Решения вопроса 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);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 16:42
2000 руб./за проект
18 дек. 2024, в 16:33
2000 руб./в час
18 дек. 2024, в 16:06
5000 руб./за проект