---
name: rimuovi-duplicati
description: Usare quando l'utente deve rimuovere i duplicati da un array, restituendo solo valori univoci.
---

# Rimuovi Duplicati

Questa skill rimuove gli elementi duplicati da un array, restituendo un nuovo array con solo i valori univoci. Utile per pulire dataset con valori ridondanti, creare liste univoche, ottimizzare elaborazioni su array, preparare dati per visualizzazioni.

## Procedura

1. **Rimuovere duplicati**: Usare `rimuoviDuplicati(array)`
2. **Passare l'array**: Il parametro deve essere un array
3. **Gestire il risultato**: Restituisce un nuovo array senza duplicati

## Regole

- `array` deve essere un array (altrimenti restituisce array vuoto)
- Restituisce un nuovo array (non modifica l'originale)
- **Preserva l'ordine**: Mantiene l'ordine della prima occorrenza di ogni elemento
- Usa confronto stretto (===) per determinare i duplicati
- Funziona con qualsiasi tipo di elemento (primitivi, oggetti, ecc.)

## Esempi

### Esempio 1: Rimuovere duplicati da numeri

```javascript
const numeri = [1, 2, 2, 3, 3, 3, 4, 5];
const univoci = rimuoviDuplicati(numeri);
console.log(univoci); // [1, 2, 3, 4, 5]
```

### Esempio 2: Rimuovere duplicati da stringhe

```javascript
const frutti = ['mela', 'banana', 'mela', 'arancia', 'banana'];
const univoci = rimuoviDuplicati(frutti);
console.log(univoci); // ['mela', 'banana', 'arancia']
```

### Esempio 3: Pulire array con molti duplicati

```javascript
const dati = [5, 5, 5, 2, 2, 8, 8, 8, 8, 1];
const puliti = rimuoviDuplicati(dati);
console.log(puliti); // [5, 2, 8, 1]
```

### Esempio 4: Array già senza duplicati

```javascript
const unici = [10, 20, 30, 40];
const risultato = rimuoviDuplicati(unici);
console.log(risultato); // [10, 20, 30, 40]
```

### Esempio 5: Array vuoto

```javascript
const risultato = rimuoviDuplicati([]);
console.log(risultato); // []
```

## Dettagli Aggiuntivi

- **Implementazione**: Usa `Set` per rimuovere automaticamente i duplicati
- **Processo**: ` [...new Set(array)]` 
- **Set**: Struttura dati JavaScript che memorizza valori univoci
- **Spread operator**: Converte Set in array
- **Efficienza**: O(n) - tempo lineare
- **Immutabilità**: Non modifica l'array originale
- **Esempi**:
  - rimuoviDuplicati([1, 2, 2, 3, 3, 3]) → [1, 2, 3]
  - rimuoviDuplicati(['a', 'b', 'a', 'c']) → ['a', 'b', 'c']
  - rimuoviDuplicati([]) → []
- **Note**: Per oggetti, usa confronto per riferimento, non per valore
