Метод, используемый в решении полезный и с ним мы будем работать дальше. Но мы поменяем то как именно мы с ним работаем потому что при текущем использовании далеко не всегда будет удаляться то зелье которое нужно удалить.
Задача реализации removePotion сводится к 2-м шагам:
Найти индекс зелья в массиве
Использовать этот индекс в splice чтобы зелье было удалено
я правильно понял Вашу мысль - сначала перебираем существующий массив, последовательно сравнивая значения с предполагаемым удаляемым именем и при совпадении - удаляем именно необходимое нам? Сейчас пришлю код, как я его понял
Не до конца то что я представлял когда описывал идею. Я не знаю всех последствий итерации по массиву и изменению массива в этой же итерации и не советовал бы писать такой код.
Первый шаг - найти индекс элемента в массиве. Метод массива indexOf делает то что надо. Перебор по всем элементам массива для поиска индекса искомого тоже сработает но будет неоптимальным.
Второй шаг - удалить элемент из массива с этим индексом.
Эти шаги как бы “изолированы” друг от друга. Они решаются как бы отдельно друг от друга. Вместе сводятся через переменную типа “индексИскомогоЗелья”, куда первый шаг записывает свой результат, и которую второй шаг использует в splice.
Лирика №1. Одна эвристика которая мне помогала когда я только начинал это сформулировать чего мне надо достичь (найти индекс элемента массива) а потом проглядеть все методы и посмотреть какие из них делают то что мне надо (тебе могут показаться полезными методы типа indexOf или find. Списки методов с их описанием лучше годно оформлены на MDN: Array - JavaScript | MDN
Лирика №2. Разбитие задачи на отдельные изолированные шаги это то что тебе нужно научиться делать сразу же после изучения массивов-функций-переменных-условий. Гиганские проекты, маленькие проекты, даже функции - все они состоят из относительно изолированных решений, сводящихся очевидным образом вместе (проекты через АПИ, функции - через вызовы других функций или значения в переменных).
BINGO!!!
Не знаю, говорил ли Вам кто то это раньше, но Ваши объяснения реально дают понимание.
Вот что у меня получилось. И автопроверка пропустила:
const atTheOldToad = {
potions: [“Speed potion”, “Dragon breath”, “Stone skin”],
removePotion(potionName) {
// Change code below this line
const indexFinderToad = this.potions.indexOf(potionName);
this.potions.splice(indexFinderToad, 1);
// Change code above this line
},
};
В реальности мои объяснения не сработают на всех потому что стили мышления с пособы понять мир у людей слишком разнятся и мой стиль не подходит для подавляющего большинства людей. Тебе по-своему повезло попасть сюда и получить объяснения в понятном для себя формате. Давай сразу на “ты”, это интернет, тут все свои.