Answer
t.me/js_testОтвет:
function deleteNth(arr, n) {
const cache = {};
return arr.filter((v) => {
cache[v] = (cache[v] || 0) + 1;
return cache[v] <= n;
});
}
Объяснение:
Создадим переменную cache в которой будем накапливать количество появлений каждого символа в переданном массиве. Далее с помощью метода filter идём по массиву и каждый раз кэшируем количество каждого из символов. Если количество символов лежащих в кэше дошло до значения n то перестаём включать символ в результирующий массив.
Код для проверки:
function deleteNth(arr, n) {
const cache = {};
return arr.filter((v) => {
cache[v] = (cache[v] || 0) + 1;
return cache[v] <= n;
});
}
console.log(deleteNth([20, 37, 20, 21], 1));
console.log(deleteNth([1, 1, 3, 3, 7, 2, 2, 2, 2], 3));
console.log(deleteNth(['a', 'b', 'a', 'b', 'a'], 2));