I metodi $.grep()
e $.map()
sono due metodi di utility di jQuery. Vediamo come implementarli utilizzando solo JavaScript.
Partiamo da un array originale ed applichiamo una funzione di callback alle voci dell'array:
(function() {
var Utils = {
grep: function(arr, callback) {
var newArr = [],
len = arr.length,
i;
for (i = 0; i < len; i++) {
var e = arr[i];
if (callback(e)) {
newArr.push(e);
}
}
return newArr;
},
map: function(arr, callback) {
var newArr = [],
len = arr.length,
i;
for (i = 0; i < len; i++) {
var e = arr[i];
var n = callback(e);
newArr.push(n);
}
return newArr;
}
};
window.Utils = Utils;
})()
Quindi testiamo il tutto:
var arr = [1, 2, 3, 4, 5, 8, 12, 30, 43, 78, 80, 24];
arr = Utils.grep(arr, function(item) {
return (item % 2 == 0); // solo numeri pari
});
console.log(arr);
/*
0: 2
1: 4
2: 8
3: 12
4: 30
5: 78
6: 80
7: 24
*/
var arr2 = [1, 2, 3, 4, 5, 6];
arr2 = Utils.map(arr2, function(item) {
return (Math.pow(item, 2)); // ciascuna voce elevata alla potenza
});
console.log(arr2);
/*
0: 1
1: 4
2: 9
3: 16
4: 25
5: 36
*/