Удаление элементов из массива по индексу
Напишите функцию, которая первым аргументом будет принимать массив, а все последующие аргументы — индексы элементов, которые следует удалить из массива. Индексов может быть несколько. В конце работы функция должна возвращать новый, отредактированный массив:
Решение
Вот код готовой функции:
Объяснение
arguments
— это псевдо массив, в котором хранятся все аргументы, переданные в функцию. Чтобы дальше не искать вхождение индекса перебором значенийarguments
в цикле, а использовать удобный метод.indexOf()
, нужно перевестиarguments
в массив. Это осуществляется с помощью применения метода.slice()
к пустому массиву и заменой значения параметраthis
наarguments
с помощью функции.call()
. Подробнее о работе.call()
здесь.- Теперь, используя метод
.filter()
, составим массив в который не будут входить элементы, подлежащие к удалению. Подробнее о.filter()
здесь. - Если индекс текущего элемента входит в массив индексов элементов, которые подлежат удалению, то метод
.indexOf()
вернёт значение равное или больше нуля. Callback-функция вернёт false и текущий элемент не войдёт в новый массив.
Решение #2
Решение #3
Автор решения Сергій Гулько. Решение показывает возможности использования сетов в ES6.
Решение #4
Автор решений Евгений Бовыкин. Решения ориентированы на высокую производительность.
Комментарии