- [Ordinare gli elementi di un array](#sorting-elements-in-array)
- [Array di array](#array-of-arrays)
- [💻 Esercizio](#-exercise)
- [Esercizio: Livello 1](#exercise-level-1)
- [Esercizio: Livello 2](#exercise-level-2)
- [Esercizio: Livello 3](#exercise-level-3)
# 📔 Giorno 5
## Arrays
A differenza delle variabili, un array può memorizzare _molti valori_. Ogni valore in un array ha un _indice_ e ogni indice ha _un riferimento in un indirizzo di memoria_. È possibile accedere a ciascun valore utilizzando i loro _indici_. L'indice di un array parte da _zero_ e l'indice dell'ultimo elemento è diminuito di uno rispetto alla lunghezza dell'array.
Un array è una raccolta di diversi tipi di dati ordinati e modificabili. Un array consente di memorizzare elementi duplicati e tipi di dati diversi. Una array può essere vuoto o può contenere valori di tipi di dati diversi.
### Come creare un array vuoto
In JavaScript, possiamo creare un array in diversi modi. Vediamo i diversi modi per creare un array.
È molto comune usare _const_ invece di _let_ per dichiarare una variabile di un array. Se si usa const, significa che non si usa più il nome di quella variabile.
- Usare il costruttore Array
```js
// syntax
const arr = Array()
// or
// let arr = new Array()
console.log(arr) // []
```
- Usare le parentesi quadre ([])
```js
// syntax
// This the most recommended way to create an empty list
const arr = []
console.log(arr)
```
### Come creare un array contenente valori
Array con valori iniziali. Utilizziamo la proprietà _length_ per trovare la lunghezza di un array.
Come abbiamo visto nella sezione precedente, possiamo dividere una stringa in diverse posizioni e convertirla in un array. Vediamo gli esempi seguenti.
### Accedere agli elementi dell'array usando l'indice
Si accede a ciascun elemento di un array utilizzando il suo indice. L'indice di un array parte da 0. L'immagine seguente mostra chiaramente l'indice di ciascun elemento dell'array.
Esistono diversi metodi per manipolare un array. Questi sono alcuni dei metodi disponibili per gestire gli array:_Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_
#### Il Costruttore dell'array
Array: Crea un array.
```js
const arr = Array() // creates an an empty array
console.log(arr)
const eightEmptyValues = Array(8) // it creates eight empty values
console.log(eightEmptyValues) // [empty x 8]
```
#### Creare valori statici con fill
fill: Riempe l'array con l'elemento specificato.
```js
const arr = Array() // creates an an empty array
console.log(arr)
const eightXvalues = Array(8).fill('X') // it creates eight element values filled with 'X'
join: Viene utilizzato per unire gli elementi dell'array; l'argomento passato nel metodo join verrà unito con l'array e restituito come stringa. Per impostazione predefinita, unisce con una virgola, ma possiamo passare diversi parametri stringa che possono unire gli elementi.
shift: Rimuove l'elemento in testa (prima posizione).
```js
const numbers = [1, 2, 3, 4, 5]
numbers.shift() // -> remove one item from the beginning
console.log(numbers) // -> [2,3,4,5]
```
#### Aggiungere un elemento in prima posizione dell'array
unshift: Aggiunge un elemento in prima posizione.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.unshift(0) // -> add one item from the beginning
console.log(numbers) // -> [0,1,2,3,4,5]
```
#### Invertire l'ordine dell'array
reverse: Inverti l'ordine degli elementi.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.reverse() // -> reverse array order
console.log(numbers) // [5, 4, 3, 2, 1]
numbers.reverse()
console.log(numbers) // [1, 2, 3, 4, 5]
```
#### Ordinare gli elementi di un array
sort: dispone gli elementi dell'array in ordine crescente. L'ordinamento richiede una funzione di richiamo; vedremo come utilizzare l'ordinamento con una funzione di richiamo nelle prossime sezioni.
🌕 Sei diligenti e hai già ottenuto molti risultati. Hai appena completato le sfide del 5° giorno e sei a 5 passi dalla tua strada verso la grandezza. Ora fai qualche esercizio per il cervello e per i muscoli.
## 💻 Esercizio
### Esercizio: Livello 1
```js
const countries = [
'Albania',
'Bolivia',
'Canada',
'Denmark',
'Ethiopia',
'Finland',
'Germany',
'Hungary',
'Ireland',
'Japan',
'Kenya'
]
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
]
```
1. Dichiarare un array _vuoto_;
2. Dichiarare un array con un numero di elementi superiore a 5
3. Trovare la lunghezza dell'array
4. Ottenere il primo elemento, l'elemento centrale e l'ultimo elemento dell'array.
5. Dichiarare un array chiamato _mixedDataTypes_, inserire diversi tipi di dati nell'array e trovare la lunghezza dell'array. La dimensione dell'array deve essere maggiore di 5
6. Dichiarare una variabile array chiamata itAziende e assegnare i valori iniziali Facebook, Google, Microsoft, Apple, IBM, Oracle e Amazon.
7. Stampare l'array utilizzando _console.log()_.
8. Stampare il numero di aziende nell'array
9. Stampare la prima azienda, la metà e l'ultima azienda
10. Stampare ogni azienda
11. Cambiare il nome di ogni azienda in maiuscolo, uno per uno, e stamparli.
12. Stampare la matrice come una frase: Facebook, Google, Microsoft, Apple, IBM, Oracle e Amazon sono grandi aziende IT.
13. Controllare se una certa azienda esiste nell'array itCompanies. Se esiste, restituisce l'azienda, altrimenti restituisce un'azienda _non trovata_.
14. Filtrare le aziende che hanno più di una "o" senza il metodo del filtro.
15. Ordinare l'array usando il metodo _sort()_.
16. Invertire l'array utilizzando il metodo _reverse()_.
17. Estrarre le prime 3 società dall'array.
18. Eliminare le ultime 3 aziende dall'array.
19. Eliminare dall'array l'azienda o le aziende IT centrali.
20. Rimuovere la prima azienda IT dall'array
21. Rimuovere l'azienda o le aziende IT centrali dall'array.
22. Rimuovere l'ultima azienda IT dall'array
23. Rimuovere tutte le aziende IT
### Esercizio: Livello 2
1. Creare un file separato countries.js e memorizzare l'array dei Paesi in questo file, creare un file separato web_techs.js e memorizzare l'array webTechs in questo file. Accedere a entrambi i file nel file main.js
1. Per prima cosa rimuovete tutte le punteggiature, cambiate la stringa in array e contate il numero di parole nell'array.
```js
let text =
'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.'
- aggiungere "Carne" all'inizio del carrello se non è già stato aggiunto
- aggiungere "Zucchero" alla fine del carrello se non è già stato aggiunto
- rimuovere "Miele" se si è allergici al miele
- modificare il tè in "Tè verde".
1. Nell'array dei Paesi controllare se 'Etiopia' esiste nell'array, se esiste stampare 'ETIOPIA'. Se non esiste, aggiungerlo all'elenco dei paesi.
1. Nell'array webTechs verificare se Sass esiste nell'array e se esiste stampare 'Sass è un preprocesso CSS'. Se non esiste, aggiungere Sass all'array e stampare l'array.
1. Concatenare le due variabili seguenti e memorizzarle in una variabile fullStack.