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" ]
return _.pluck(_.filter(data, function(d){return _.startsWith(d.name, 'J')}), 'name')
[{name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'Ben'}]3
3
return _.size(_.filter(data, _.matches({'name':'John'})))
[{name: 'John Smith'}, {name: 'Mary Kay'}, {name: 'Peter Pan'}, {name: 'Ben Franklin'}][ "John", "Mary", "Peter", "Ben" ]
[ "John", "Mary", "Peter", "Ben" ]
return _.map(data, function(d){return _.first(d.name.split(" "))})
[{name: 'John Smith'}, {name: 'Mary Smith'}, {name: 'Peter Pan'}, {name: 'Ben Smith'}][ "John", "Mary", "Ben" ]
[ "John", "Mary", "Ben" ]
var smith = _.filter(_.filter(data, function(d){return _.endsWith(d.name, 'Smith')}), 'name') return _.map(smith, function(d){return _.first(d.name.split(" ")) })
[{name: 'John Smith'}, {name: 'Mary Kay'}, {name: 'Peter Pan'}][
{
"name": "Smith, John"
},
{
"name": "Kay, Mary"
},
{
"name": "Pan, Peter"
}
][ "Smith,John", "Kay,Mary", "Pan,Peter" ]
return _.map(data, function(func){return _.last(func.name.split(" ")) +','+ _.first(func.name.split(" "))})
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]1
1
return _.pluck(_.filter(data, function(d){return _.endsWith(d.gender, 'f')}), 'gender').length
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]2
2
var m = _.filter(data, function(func){return _.endsWith(func.gender, 'm')}) var sm = _.filter(m, function(func){return _.endsWith(func.name, 'Smith')}, 'name') return sm.length
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]true
true
if((_.pluck(_.filter(data, function(d){return _.endsWith(d.gender, 'm')}), 'gender').length)> (_.pluck(_.filter(data, function(d){return _.endsWith(d.gender, 'f')}), 'gender').length)) 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"
return _.pluck(_.filter(data, function(func){return func.name == 'Peter Pan'}), 'gender')[0]
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]54
54
return _.max(_.pluck(data, 'age'))
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]true
true
// use _.all return _.every(data, function(func) { return func.age < 60 })
[{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, function(func) { return func.age > 18 })
[{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 food = _.filter(data, function(func){return _.pluck(func.favorites, 'food')}) //console.log(food.length) var food = _.filter(data, function(func) {return _.some(func.favorites, function(func){return func == 'food' })}) return food.length
[{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 travel = _.filter(data, function(func) {return _.some(func.favorites, function(func){return func == 'travel' })}) return _.pluck(_.filter(travel, function(func){return _.gt(func.age, '40')}), 'name')
[{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 food = _.filter(data, function(func) {return _.some(func.favorites, function(func){return func == 'food' })}) var person = _.max(food, 'age') return person.name //return _.pluck(function(func){return _.max(food, 'age')}, 'name:')
[{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 return _.uniq(_.flatten(_.pluck(data, 'favorites')))
[{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" ]
return _.uniq(_.map(data, function(func){return _.last(func.name.split(" "))}))