JavaScript: implementare da zero i metodi grep() e map()

JavaScript: implementare da zero i metodi grep() e map()

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
*/
​
Torna su