Higher Order Function & currying

by Christopher McCulloh

HTML

<div id="output"></div>

JavaScript

var dollarFormatter = function dollarFormatter( num ) {
    return ['$', num].join('');   
}

var percentFormatter = function dollarFormatter( num ) {
    return ['%', num].join('');   
}

var logger = function logger( prefix ) {
    return function (formatter) {
        return function( message ) {
            $('#output').append( [prefix, ' ', formatter(message), '<br>'].join('') );
        }
    }
}

var log = logger('prefix');
log(dollarFormatter)(9);
log(percentFormatter)(9);


var people = [
    {id: 1, name: 'Mike', age: 9},
    {id: 1, name: 'John', age: 9},
    {id: 1, name: 'Jim', age: 9},
    {id: 1, name: 'Jake', age: 9},
    {id: 1, name: 'James', age: 9},
    {id: 1, name: 'Paul', age: 9}
]

var filtered = people.map (
    function(item) {
        return item.name;
    }).filter(
        function (item) {
            return ( item.name.indexOf("i") !== -1 );
        }

var filtered = people.filter(
    function (item) {
        return ( item.name.indexOf("i") !== -1 );
    }
);

console.table(filtered);