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 _.contains(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")})),"name"); 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(n.name.split(" "))}) return result
[{name: 'John Smith'}, {name: 'Mary Smith'}, {name: 'Peter Pan'}, {name: 'Ben Smith'}]
[ "John", "Mary", "Ben" ]
[ "John", "Mary", "Ben" ]
var result = 'not done' var fullname= _.pluck(_.filter(data,function(n){return _.contains(n.name,"Smith")}),"name") return _.map(fullname,function(n){return _.first(n.split(" "))})
[{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){var split =_.words(n.name) return {name : _.last(split).concat(", ").concat(_.first(split))} }) 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,'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 fullname =_.filter(data,'gender','m') var people =_.filter(fullname,function(n){return _.contains(n.name ,"Smith")}) return _.size(people);
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]
true
true
var male =_.size(_.filter(data,'gender','m')) var female =_.size(_.filter(data,'gender','f')) if(male>female) { return true } else{ return false}
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]
"m"
"m"
var result =_.find(data,function(n){return n.name=='Peter Pan'}).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 = _.last(_.pluck(_.sortBy(data,"age"),'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 var result = _.some(data,function(n){ return n.age<18}) 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: 'Ben Smith', age: 35, favorites: ['craft', 'food']}]
3
3
var result = _.size(_.filter(data,function(n){return _.any(n.favorites,function(t){return t=='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 (n.age>40 )&& _.any(n.favorites,function(t){return t=='travel'})}),"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 foodypeople=_.filter(data,function(n){return _.any(n.favorites,function(t){return t=='food'})}) var result = _.last(_.pluck(_.sortBy(foodypeople,'age'),'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 result = _.uniq(_.flatten(_.pluck(data,"favorites"))) 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 lastname = _.map(data,function(n){return _.last(n.name.split(" "))}) var result = _.uniq(lastname) return result