Функция remove
удаляет элементы из массива, для которых переданная функция возвращает false
.
Используем Array.prototype.filter()
, чтобы найти элементы массива, которые возвращают истинные значения и Array.prototype.reduce()
вместе с Array.prototype.splice()
чтобы удалить элементы из оригинального массива. Также, вызов этой функции вернёт массив с теми элементами, которые были удаленны из оригинального массива.
Функция func
вызывается с тремя аргументами (value
, index
, array
).
const remove = (arr, func) =>
// Проверяем, является ли arr массивом.
Array.isArray(arr)
// Фильтруем массив arr применяя функцию func к каждому элементу.
? arr.filter(func).reduce((acc, val) => {
// Удаляем отфильтрованные элементы из оригинального массива.
arr.splice(arr.indexOf(val), 1);
// Возвращаем новый массив только с отфильтрованными элементами.
return acc.concat(val);
}, [])
: [];
// Пример:
const arr = [1, 2, 3, 4, 5, 6];
const func = n => n % 2 === 0;
remove(arr, func); // [2, 4, 6]
// arr = [1, 3, 5]