Удалить определенное количество элементов из массива
Есть массив
let arr = [1, 2, 3, 4, 5, 5, 5, 5, 6 ...];
Пытаюсь удалить из него 2 пятерки. Т.е. что бы получилось так [1, 2, 3, 4, 5, 5, 6 ...]
Предполагаю, что это можно сделать счетчиком. т.е. цикл проходится по массиву, находит 5, удаляет ее, добавляет в переменную + 1 и так до тех пор пока переменная не будет = 2. Возможно кто то знает более удачное решение?
Ответы (1 шт):
Автор решения: Pilaton
→ Ссылка
Набросал вам тут какую-то более-менее простую для восприятия функцию в полудреме, которой скармливаете массив, элемент который оттуда нужно удалить и в каком количестве.
let arr = [1, 2, 3, 4, 5, 5, 5, 5, 6];
function deleteElArr(arr, delElement, amount) {
if (!arr.includes(delElement)) {
return 'В массиве нет такого элемента';
}
let count = 0;
for (const el of arr) {
if (el === delElement) count++;
}
count -= amount;
if (count < 0) {
return 'В массиве нет такого количества удаляемых элементов';
}
return arr.filter((el) => {
if (el === delElement) {
if (count == 0) return false;
count--;
return true;
}
return true;
});
}
console.log('deleteElArr(arr, 5, 2)', deleteElArr(arr, 5, 2)); // [1, 2, 3, 4, 5, 5, 6] удалили две пятерки
console.log('deleteElArr(arr, 5, 10)', deleteElArr(arr, 5, 10)); // В массиве нет такого количества удаляемых элементов
console.log('deleteElArr(arr, 10, 2)', deleteElArr(arr, 10, 2)); // В массиве нет такого элемента