Veqtor
@Veqtor

Может кто-нибудь помочь с решением задачи на JavaScript?

Всем привет. Я пытаюсь освоить JavaScript самостоятельно через учебник code.mu/ru/javascript/book/prime. Имеется там вот такая задача: "Сделайте функцию delElem, которая параметрами будет принимать значение и массив и удалять из массива все элементы с таким значением." Я её решаю так:
function delElem (num, arr) {
	for (let elem of arr) {
		if (num == elem) {
			arr.splice(elem, 1);
		}
	}
	return(arr);
}

но почему-то это не верно. Подсмотрел решение этой задачи в интернете, и по сути там также решают но через цикл for, а не for-of как я. Объясните кто-нибудь почему моё решение не работает.
  • Вопрос задан
  • 412 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Во-первых, for ... of перебирает значения элементов массива, а не индексы, поэтому splice использовать нельзя.
Во-вторых, модифицировать массив, по которому идёт перебор, вообще не лучшая идея. Если делать такое, то делать надо умеючи и аккуратно.
В-третьих, для такой цели есть метод массива filter.
Ответ написан
wapster92
@wapster92 Куратор тега JavaScript
const arr = [1, 2, 3, 4, 1, 6, 7];

const delEl = (val, arr) => {
  let index = arr.indexOf(val);
  if(~index) {
    arr.splice(index, 1);
    return delEl(val, arr);
  }
  return arr;
}

console.log(delEl(1, arr)); //[2,3,4,6,7]


Гораздо проще применить метод filter
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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