---
name: filtra-array
description: Usare quando l'utente deve filtrare un array in base a una condizione personalizzata.
---

# Filtra Array

Questa skill filtra un array, restituendo un nuovo array con solo gli elementi che soddisfano una condizione specificata. Utile per selezionare elementi che soddisfano una condizione, filtrare dati in tabelle o liste, ricerche e filtri dinamici, elaborazione di dataset.

## Procedura

1. **Filtrare l'array**: Usare `filtraArray(array, callback)`
2. **Definire la condizione**: Il callback deve restituire true o false per ogni elemento
3. **Gestire il risultato**: Restituisce un nuovo array con gli elementi filtrati

## Regole

- `array` deve essere un array (altrimenti restituisce array vuoto)
- `callback` deve essere una funzione che accettare un elemento
- Il callback riceve ogni elemento dell'array
- Restituisce un nuovo array (non modifica l'originale)
- Restituisce array vuoto per input non valido

## Esempi

### Esempio 1: Filtrare numeri maggiori di 50

```javascript
const numeri = [10, 60, 20, 70, 30, 80];
const filtrati = filtraArray(numeri, num => num > 50);
console.log(filtrati); // [60, 70, 80]
```

### Esempio 2: Filtrare stringhe che contengono una sottostringa

```javascript
const parole = ['mela', 'banana', 'arancia', 'pera'];
const conA = filtraArray(parole, p => p.includes('a'));
console.log(conA); // ['banana', 'arancia', 'pera']
```

### Esempio 3: Filtrare oggetti per proprietà

```javascript
const persone = [
    { nome: 'Gino', eta: 25 },
    { nome: 'Maria', eta: 30 },
    { nome: 'Giovanni', eta: 20 }
];
const adulti = filtraArray(persone, p => p.eta >= 25);
console.log(adulti); // [{ nome: 'Gino', eta: 25 }, { nome: 'Maria', eta: 30 }]
```

### Esempio 4: Filtrare numeri pari

```javascript
const numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const pari = filtraArray(numeri, n => n % 2 === 0);
console.log(pari); // [2, 4, 6, 8, 10]
```

### Esempio 5: Filtrare con condizioni complesse

```javascript
const prodotti = [
    { nome: 'Laptop', prezzo: 1000, disponibile: true },
    { nome: 'Mouse', prezzo: 25, disponibile: false },
    { nome: 'Tastiera', prezzo: 75, disponibile: true }
];
const disponibiliEconomici = filtraArray(prodotti, p => p.disponibile && p.prezzo < 100);
console.log(disponibiliEconomici); // [{ nome: 'Tastiera', prezzo: 75, disponibile: true }]
```

## Dettagli Aggiuntivi

- **Implementazione**: Usa `Array.filter()` nativo
- **Callback**: Deve restituire true per includere l'elemento, false per escluderlo
- **Immutabilità**: Non modifica l'array originale
- **Efficienza**: O(n) - tempo lineare
- **Casi limite**:
  - filtraArray([1, 2, 3, 4], x => x > 2) → [3, 4]
  - filtraArray(['a', 'b', 'c'], x => x !== 'b') → ['a', 'c']
  - filtraArray([], x => x) → []
- **Tipi**: Funziona con qualsiasi tipo di elemento nell'array
