Underscore.js la libreria Javascript con più di 80 funzioni indispensabili
Oggi vi parlo di una delle librerie attualmente più diffuse in javascript, ovvero Underscore.js.
Questa libreria contiene oltre 80 funzioni per la manipolazione di Array, Oggetti e Collezioni che ci consentono di risparmiare moltissime righe di codice per eseguire delle operazioni noiose e ripetitive. Molte di queste funzioni mancano nei principali Framework con Prototype.js e jQuery che con solo 5kb (della versione Minified di Underscore.js) da oggi non mancheranno più quando saremo alle prese con lo sviluppo di funzionalità avanzate o di applicazioni in javascript. Le funzioni di questa libreria sono veramente tantissime e sono utilizzate anche da aziende molto importanti, ecco un elenco con le funzioni più rilevanti di underscore:
– find per la ricerca di elementi in un dato strutturato (collections)
[javascript]
_.find(list, iterator, [context]);
//es.
var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> 2
// Appena la funzione trova un elemento pari si ferma e restituisce tale elemento, se non c’erano elementi pari avrebbe restituito undefined
[/javascript]
– filter per selezionare solo determinati elementi dalla collections
[javascript]
_.filter(list, iterator, [context]);
//es.
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6]
//in questo caso filtrerà tutti gli elementi pari restituendoli in un array
[/javascript]
– where utile per cercare nelle collections elementi con determinate proprietà
[javascript]
_.where(list, properties);
//es.
_.where(listaAutori, {author: "Shakespeare", year: 1611});
=> [{title: "Cymbeline", author: "Shakespeare", year: 1611},
{title: "The Tempest", author: "Shakespeare", year: 1611}]
// in questo caso restituirà da una collections di libri, solo quelli dove l’author è Shakespeare e l’anno di pubblicazione è il 1611
[/javascript]
– reject questa funzione è l’inversa di filter, ovvero restituisce tutti gli elementi non corrispondenti alle caratteristiche di filtraggio
[javascript]
_.reject(list, iterator, [context]);
//es.
var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [1, 3, 5]
// come si può vedere a differenza di filter restituisce tutti gli elementi dispari
[/javascript]
– contains questa funzione cerca un elemento in una collections restituendo true se presente e false se non lo è
[javascript]
_.contains(list, value);
//es.
_.contains([1, 2, 3], 3);
=> true
//in questo caso 3 è presente nell’array e restituisce true
[/javascript]
–pluck questa funzione molto utile estrae da una collections un array composto dalla proprietà che si desidera estrapolare
[javascript]
_.pluck(list, propertyName);
//es.
var names= [{name : ‘joe’, age : 45}, {name : ‘arry’, age : 60}, {name : ‘bruce’, age : 40}];
_.pluck(names, ‘name’);
=> ["joe", "arry", "bruce"]
// in questo caso abbiamo estrapolato una array contenente solo i nomi
[/javascript]
Ci sono altre funzioni degne di rilievo come quelle dedicate all’ordinamento sortBy, groupBy, shuffle, per non parlare di quelle per gli array o delle funzioni utility, ma una delle funzioni più comode è _.chain(obj) che permette di concatenare altre funzioni sfruttando appunto come dal nome il Chaining (di cui ho già parlato qui) es.
[javascript]
var names= [{name : ‘joe’, age : 45}, {name : ‘arry’, age : 60}, {name : ‘bruce’, age : 40}];
var chainvar = _.chain(names) //abilita il Chaining su names
.sortBy(function(names){ return names.age; }) //ordina per age descrescente
.map(function(names){ return names.name + ‘ is ‘ + names.age; }) //crea un nuovo array composto da name is age
.first() //seleziona il primo elemento
.value(); //restituisce il valore
=> "bruce is 40"
[/javascript]
Per le altre innumerevoli funzioni presenti in Underscore.js vi lascio alla documentazione ufficiale reperibile qui.
Vi è piaciuta questa libreria?? Perchè non usarla anche in php?? clicca qui 😉