forEach() e filter()
forEach() e filter()
Vediamo quali sono le funzioni più interessanti che possiamo usare lavorando con Node.js, nonostante esse siano sconsigliate nell’ambito JavaScript. Ribadiamo il concetto: siccome Node.js gira su un motoreV8 di Google, l’utilizzo di queste funzioni è assolutamente sicuro, garantito, portabile e stabile. Usando queste funzioni non stiamo compiendo approssimazioni né scommettendo sulla tecnologia. Il supporto da parte di Node. Js delle specifiche di ECMAScript è ufficiale e possiamo farci affidamento.
Iniziamo considerando la funzione forEach, del tutto equivalente a quella presente in molti altri linguaggi di programmazione. La funzione permette di ciclare su tutti gli elementi dell’array, scorrendoli uno ad uno. La funzione accetta due argomenti: il primo verrà valorizzato con l’elemento corrente dell’array, il secondo con l’indice dell’elemento in questione. Data l’utilità di questa funzione usiamola per realizzare una funzione che ci tornerà comoda nei prossimi esempi:
1 2 3 4 5 6 | function print_r(array) { array.forEach(function(item, n) { console.log(n + " : " + item) ; }) ; } |
per testarla eseguiamo la funzione su un paio di array, ad esempio
1 2 3 4 5 | var array_1 = new Array("a", "b", "c", "d", "e") ; var array_2 = [ "1", "2", "3", "4", "5" ] ; print_r(array_1) ; print_r(array_2) ; |
dove abbiamo definito i due array usando due sintassi diverse per ricordarci che sono entrambe valide. Eseguendo la funzione print_r
sui due array otterremo come risultato la stampa di tutti gli elementi degli array all’interno della shell di esecuzione. Quest’uso della funzione forEach
è banale ma rende bene l’idea. Il vantaggio principale è quello di rendere più snello e robusto il codice rispetto all’uso di un tradizionale ciclo for
.
La funzione filter permette invece di filtrare i contenuti di un array. Il filtro va definito usando la sintassi delle callback, ad esempio
1 2 3 4 | var odd = array_2.filter( function(item) { return (item % 2 != 0) ; }) ; |
Ritorna solamente gli elementi dispari dell’array. Ciò significa che la variabile odd
sarà un array che contiene solo gli elementi dispari filtrati dall’array array_2
. Per verificarlo basta eseguire il seguente codice
1 2 3 | print_r(array_2) ; print_r(odd) ; |
Che mostra come l’array originale (cioè array_2
) non viene modificato dal filtro.