Answer

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));

Report Page