Следующий код добавляет метод к объекту Array.
Array.prototype.remove = function (index) {
const temp = [].concat(this);
return [].concat(temp.slice(0, index)).concat(temp.slice(index + 1));
};
let arr = [0, 1, 2, 3, 4, 5];
console.info(arr.remove(3))Механизм работает: метод remove возвращает новый массив, отличный от исходного, в котором удален элемент, помещенный по индексу index.
Я хотел бы переписать метод remove так, чтобы он изменял начальный массив и возвращал удаленный элемент, точно так же, как ведет себя метод Array.prototype.pop.
Array.prototype.remove = function (index) {...};
let arr = [0, 1, 2, 3, 4, 5];
let removed = arr.remove(3);
console.info({arr, removed}); // arr: [0, 1, 2, 4, 5], removed: 3
Какова техника достижения такого результата?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Использование метода splice в массиве для удаления одного элемента из него index.
Метод splice вернет массив с удаленными элементами (в нашей ситуации это просто массив с одним элементом), вы можете получить доступ к элементу по индексу 0
Array.prototype.remove = function (index) {
const removedItems = this.splice(index, 1);
return removedItems[0];
};
Как поделился @jsejcksn, для Typescript
interface Array<T> { remove(index: number): T | undefined; }
Вот типы, если вы хотите включить их в свой ответ: tsplay.dev/wE0vvW (Это не мой отрицательный голос!)
@AkiraTakeshi Обязательно обратите внимание на определенное поведение первого параметра для Array.prototype.splice() — особенно в тех случаях, когда это отрицательное число.