Set pour manipuler des données uniques

Petit topo rapide sur l'usades des Set en javascript et les avantages évident qu'ils possèdent sur les tableaux pour manipuler des données qui doivent restées uniques.

Si on veut manipuler des données qui doivent rester uniques, disons une liste de string par exemple, on peut le faire avec un tableau classique mais il faut à chaque fois s'assurer que la valeur n'est pas déjà présente:

const data = [];

const addToData = value => {
    if (!data.includes(value)) {
        data.push(value);
    }
};

Maintenant, on peut utiliser un Set qui, par définition, ne peut contenir que des valeurs uniques ; plus besoin donc de traiter nous-même l'unicité des données :

const data = new Set();

const addToData = value => data.add(value);

Autre avantage du Set : sa méthode has permettant de savoir si une donnée est présente semble être plus rapide que le include des tableaux.

Set n'a pas une API aussi riche que celle des tableaux mais on peut facilement itérer dessus, soit dans un boucle for...of :

for (const value of data) {
    console.log(value);
}

Soit avec une bonne vieille méthode forEach() :

data.forEach(value => {
    console.log(value);
});

Enfin, on peut facilement construire un Set à partir d'un tableau et peu importe que le tableau ait des valeurs en double, elles ne seront pas prises en compte :

const mySet = new Set(myArray);

On peut revenir à un tableau tout aussi facilement :

const myArray = [...mySet];

De tout ceci découle le fait que l'on peut nettoyer un tableau de toutes ses valeurs dupliquées en utilisant un Set :

const cleanedArray = [...new Set(oldArray)];