---
name: ordina-array
description: Usare quando l'utente deve ordinare un array di numeri o oggetti in ordine crescente.
---

# Ordina Array

Questa skill ordina un array di numeri o oggetti. Per array di primitivi, ordina numericamente. Per array di oggetti, ordina in base a una proprietà specificata. Utile per organizzare dati, ordinare tabelle e liste, preparare dati per visualizzazioni.

## Procedura

1. **Ordinare un array**: Usare `ordinaArray(array, chiave)`
2. **Specificare la chiave** (opzionale): Per oggetti, passare il nome della proprietà
3. **Gestire il risultato**: Restituisce un nuovo array ordinato

## Regole

- `array` deve essere un array (altrimenti restituisce array vuoto)
- Per array di oggetti, `chiave` deve essere una stringa con il nome della proprietà
- Crea una **copia** dell'array originale (non lo modifica)
- Ordina in **ordine crescente** per default
- Per array di primitivi, ordina numericamente (non lessicograficamente)

## Esempi

### Esempio 1: Ordinare array di numeri

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

### Esempio 2: Ordinare array di oggetti per proprietà

```javascript
const persone = [
    { nome: 'Gino', eta: 30 },
    { nome: 'Maria', eta: 25 },
    { nome: 'Giovanni', eta: 35 }
];
const ordinatiPerEta = ordinaArray(persone, 'eta');
console.log(ordinatiPerEta);
// [{ nome: 'Maria', eta: 25 }, { nome: 'Gino', eta: 30 }, { nome: 'Giovanni', eta: 35 }]
```

### Esempio 3: Ordinare array di stringhe

```javascript
const parole = ['cane', 'gatto', 'uccello', 'pesce'];
const ordinate = ordinaArray(parole);
console.log(ordinate); // ['cane', 'gatto', 'pesce', 'uccello']
```

### Esempio 4: Ordinare array di oggetti per ID

```javascript
const prodotti = [
    { id: 3, nome: 'Prodotto C' },
    { id: 1, nome: 'Prodotto A' },
    { id: 2, nome: 'Prodotto B' }
];
const ordinatiPerId = ordinaArray(prodotti, 'id');
console.log(ordinatiPerId);
// [{ id: 1, nome: 'Prodotto A' }, { id: 2, nome: 'Prodotto B' }, { id: 3, nome: 'Prodotto C' }]
```

### Esempio 5: Ordinare array vuoto

```javascript
const ordinati = ordinaArray([]);
console.log(ordinati); // []
```

## Dettagli Aggiuntivi

- **Implementazione**: Usa `Array.sort()` con spread operator per creare copia
- **Copia dell'array**: `[...array].sort()` per evitare mutazioni
- **Ordinamento numerico**: `(a, b) => a - b` per array di primitivi
- **Ordinamento per proprietà**: `(a, b) => { if (a[chiave] < b[chiave]) return -1; if (a[chiave] > b[chiave]) return 1; return 0; }`
- **Efficienza**: O(n log n) per `Array.sort()`
- **Immutabilità**: Non modifica l'array originale
- **Esempi**:
  - ordinaArray([3, 1, 2]) → [1, 2, 3]
  - ordinaArray([{id: 2}, {id: 1}], 'id') → [{id: 1}, {id: 2}]
  - ordinaArray(['c', 'a', 'b']) → ['a', 'b', 'c']
