brerie, jQuery non offre un gruppo troppo nutrito di funzioni di utilità generica. Questo approccio segue l'idea secondo cui non serve reinventare ciò che
è già disponibile. La conseguenza diretta di tutto ciò è un minor peso della libreria ed un maggior affidamento ai metodi JavaScript nativi.
Lavorare sugli Array
Il primo gruppo di utility riguarda gli array, con particolare riguardo alla possibilità di ciclare fra i valori.
La funzione $.map()
cicla fra gli elementi di un array passato come primo argomento
applicando su ognuno la funzione passata come secondo argomento. Questa funzione, a differenza di altri metodi jQuery, accetta un primo argomento indicante il valore dell'elemento ed una seconda con il suo
indice nell'array:
$.map(["uno","due","tre"],function (indice,valore) {
return indice+valore;
});
//restituisce un array ["0uno","1due","2tre"];
Molto simile a $.map()
è $.grep()
che tuttavia ha la specifica funzione di filtrare gli elementi in base al valore restituito da una funzione specifica. Inoltre in $.grep()
la posizione degli argomenti della funzione di filtraggio è invertita:
var lettere = ["a","aa","aaa"];
$.grep(lettere, function (valore,indice) {
return this.length >= 2;
});
//lettere è ["aa","aaa"]
Se viene passato un terzo argomento false
, verranno restituiti i valori che non verificano la condizione:
var lettere = ["a","aa","aaa"];
$.grep(lettere, function (valore,indice) {
return this.length >= 2;
},false);
//lettere è ["a"]
Se quello che ci interessa è invece sapere se un valore è presente all'interno di un array useremo $.inArray()
passandogli il valore da ricercare e l'array in cui cercarlo:
$.inArray(4,[2,3,4]);
//restituisce true
Per unire due array, infine, è disponibile $.merge()
:
$.merge( [0,1,2], [2,3,4] )
//restituisce [0,1,2,2,3,4]
//i duplicati non sono eliminati!
La
maggior parte delle funzioni presentate finora opera solo con array,
tuttavia potrebbe presentarsi il caso in cui non si sia sicuri del tipo
di variabile che possediamo o comunque si voglia convertirla in array.
In tal caso useremo $.makeArray()
:
//un array rimane tale
$.makeArray([0,1,2]);
// [0,1,2]
//un oggetto diventa l'unico valore di un array
$.makeArray({"chiave1":"valore1"});
// [{"chiave1":"valore1"}]
Questa funzione può anche risultare utile per convertire un array di elementi DOM (che non è un "vero e proprio" array):
var elementi = document.getElementsByTagName("div");
//elementi.constructor == Object
$.makeArray(elementi);
//elementi.constructor == Array
Infine, per verificare se una variabile è un vero array possiamo usare $.isArray()
:
$.isArray([0,1,2]); // restituisce true