Complete the following Lodash exercises. The goal is to become really good at
functional programming paradigm (e.g., _.map, _.filter, _.all, _.any ...etc) and
a number of really useful Lodash methods (e.g., _.find, _.pluck ... etc).
solution blockfor/while loop is allowedFamiliarity with programming in this way will not only make you a super productive programmer but also will pave the way for you to learn MapReduce and MongoDB.
[{name: 'John'}, {name: 'Mary'}, {name: 'Joe'}, {name: 'Ben'}]4
4
return data.length[{name: 'John'}, {name: 'Mary'}, {name: 'Joe'}, {name: 'Ben'}][ "John", "Mary", "Joe", "Ben" ]
[ "John", "Mary", "Joe", "Ben" ]
return _.map(data, function(d){ return d.name; })
[{name: 'John'}, {name: 'Mary'}, {name: 'Joe'}, {name: 'Ben'}][ "John", "Joe" ]
[ "John", "Joe" ]
var result = _.pluck(_.filter(data,function(n){ return _.startsWith(n.name, "J"); }),'name'); return result;
[{name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'Ben'}]3
3
var result = _.size(_.filter(data,function(n){ return _.contains(n.name, "John"); })) return result;
[{name: 'John Smith'}, {name: 'Mary Kay'}, {name: 'Peter Pan'}, {name: 'Ben Franklin'}][ "John", "Mary", "Peter", "Ben" ]
[ "John", "Mary", "Peter", "Ben" ]
var result = _.map(data,function(n){ return _.first(_.words(n.name)); }) return result
[{name: 'John Smith'}, {name: 'Mary Smith'}, {name: 'Peter Pan'}, {name: 'Ben Smith'}][ "John", "Mary", "Ben" ]
[ "John", "Mary", "Ben" ]
var S = _.filter(data,function(n){ return _.last(_.words(n.name)) == 'Smith'; }) var result = _.map( S, function(n){ return _.first(_.words(n.name)); }) return result;
[{name: 'John Smith'}, {name: 'Mary Kay'}, {name: 'Peter Pan'}][
{
"name": "Smith, John"
},
{
"name": "Kay, Mary"
},
{
"name": "Pan, Peter"
}
][
{
"name": "Smith, John"
},
{
"name": "Kay, Mary"
},
{
"name": "Pan, Peter"
}
]var result = _.map(data, function(n){ return {"name": _.last(_.words(n.name))+ ", "+_.first(_.words(n.name))} }) return result;
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]1
1
var result = _.size(_.filter(data,function(n){ return n.gender == 'f'; })); return result
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]2
2
var S = _.filter(data,function(n){ return n.gender == 'm'; }) var S2 = _.filter(S,function(n){ return _.last(_.words(n.name)) == 'Smith'; }) var result = _.size(_.map(_.pluck(S2,'name'), function(n){ return _.last(_.words(n)); })); return result;
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]true
true
var m = _.size(_.filter(data, function(n){ return n.gender == 'm'; })); var f = _.size(_.filter(data,function(n){ return n.gender == 'f'; })); if( m>f) return true;else false;
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]"m"
"m"
var obj = _.find(data, 'name', "Peter Pan"); var result = obj.gender; return result
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]54
54
var result = _.max( _.pluck(data, 'age')); return result
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]true
true
// use _.all var result = _.all(data, function(n){ return n.age < 60; }); return result
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]true
true
// use _.some return _.some( data, {'age': _.min(_.pluck(data,'age'))});
[{name: 'John Smith', age: 54, favorites: ['food', 'movies']},
{name: 'Mary Smith', age: 42, favorites: ['food', 'travel']},
{name: 'Peter Pan', age: 15, favorites: ['minecraft', 'pokemo']},
{name: 'Ben Smith', age: 35, favorites: ['craft', 'food']}]3
3
var result = _.size(_.filter(data, function(n){ return _.includes(n.favorites, 'food'); })) return result
[{name: 'John Smith', age: 54, favorites: ['food', 'movies']},
{name: 'Mary Smith', age: 42, favorites: ['food', 'travel']},
{name: 'Peter Pan', age: 15, favorites: ['minecraft', 'pokemo']},
{name: 'Joe Johnson', age: 46, favorites: ['travel', 'movies']},
{name: 'Ben Smith', age: 35, favorites: ['craft', 'food']}][ "Mary Smith", "Joe Johnson" ]
[ "Mary Smith", "Joe Johnson" ]
var result = _.pluck(_.filter(data,function(n) { return (_.includes(n.favorites,'travel') && n.age > 40); }),'name'); return result;
[{name: 'John Smith', age: 54, favorites: ['food', 'movies']},
{name: 'Mary Smith', age: 42, favorites: ['food', 'travel']},
{name: 'Peter Pan', age: 15, favorites: ['minecraft', 'pokemo']},
{name: 'Joe Johnson', age: 46, favorites: ['travel', 'movies']},
{name: 'Ben Smith', age: 35, favorites: ['craft', 'food']}]"John Smith"
"John Smith"
var S = _.filter(data,function(n){ return _.includes(n.favorites,'food'); }); var obj = _.find(S, { 'age': _.max(_.pluck(data, 'age'))}, 'name'); var result = obj.name; return result
[{name: 'John Smith', age: 54, favorites: ['food', 'movies']},
{name: 'Mary Smith', age: 42, favorites: ['food', 'travel']},
{name: 'Peter Pan', age: 15, favorites: ['minecraft', 'pokemo']},
{name: 'Joe Johnson', age: 46, favorites: ['travel', 'movies']},
{name: 'Ben Smith', age: 35, favorites: ['craft', 'food']}][ "food", "movies", "travel", "minecraft", "pokemo", "craft" ]
[ "food", "movies", "travel", "minecraft", "pokemo", "craft" ]
// hint: use _.pluck, _.uniq, _.flatten in some order var S = _.pluck(data, 'favorites'); var result = _.uniq(_.flatten(S)); return result
[{name: 'John Smith', age: 54, favorites: ['food', 'movies']},
{name: 'Mary Smith', age: 42, favorites: ['food', 'travel']},
{name: 'Peter Pan', age: 15, favorites: ['minecraft', 'pokemo']},
{name: 'Joe Johnson', age: 46, favorites: ['travel', 'movies']},
{name: 'Ben Smith', age: 35, favorites: ['craft', 'food']}][ "Smith", "Pan", "Johnson" ]
[ "Smith", "Pan", "Johnson" ]
var obj = _.map(_.pluck(data,'name'), function(n){ return _.last(_.words(n)); }); var result = _.uniq(obj) return result