DEV Community

Discussion on: JavaScript Katas: Remove duplicates

Collapse
 
aminnairi profile image
Amin

Very bad solution for anyone in search of performance but here is my take at the challenge using a terminal recursion and TypeScript.

"use strict";

/**
 * Deduplicate an array
 * 
 * @example
 * deduplicate([1, 2, 2, 3, 3, 3]); // [1, 2, 3]
 * deduplicate(["boom", "boom", "satellite"]); // ["boom", "satellite"]
 */
function deduplicate<T>([item, ...items]: T[], deduplicated: T[] = []): T[] {
    if (item === undefined) {
        return deduplicated;
    }

    if (deduplicated.includes(item)) {
        return deduplicate(items, deduplicated);
    }

    return deduplicate(items, [...deduplicated, item]);
}