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 _.map(_.filter(data, function(n) { return n.name.charAt(0) == 'J'}), function(d){ return d.name })
[{name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'Ben'}]3
3
return _.size(_.filter( data, function(n) { return n.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(obj) { return obj["name"].split(" ")[0]; })
[{name: 'John Smith'}, {name: 'Mary Smith'}, {name: 'Peter Pan'}, {name: 'Ben Smith'}][ "John", "Mary", "Ben" ]
[ "John", "Mary", "Ben" ]
return _.map(_.filter(data, function(obj) { return obj.name.split(" ")[1] == 'Smith' } ),function(obj) { return obj.name.split(" ")[0]; })
[{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"
}
]return _.map( data, function(n){ return {"name" : n.name.split(" ")[1] + ", " + n.name.split(" ")[0] };})
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]1
1
return _.size(_.filter( data, function(n){ return n.gender == 'f'}))
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]2
2
return _.size(_.filter( data, function(n){ return n.gender == 'm' && n.name.split(" ")[1] == 'Smith' }))
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]true
true
men = _.size(_.filter( data, function(n){ return n.gender == 'm'})) women = _.size(_.filter( data, function(n){ return n.gender == 'f'})) return men > women
[{name: 'John Smith', gender: 'm'}, {name: 'Mary Smith', gender: 'f'}, {name: 'Peter Pan', gender: 'm'}, {name: 'Ben Smith', gender: 'm'}]"m"
"m"
return _.find(data, {name: 'Peter Pan'}).gender
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]54
54
return _.last(_.sortBy(data, 'age')).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 _.all(data, function(n){ return n.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(n){ return n.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
return _.size(_.filter(data, function(n) { return _.contains(n.favorites, 'food') } ))
[{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" ]
return _.pluck(_.filter(data, function(n) { return _.contains(n.favorites, 'travel') && n.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"
return _.last(_.sortBy( _.filter(data, function(n) { return _.contains(n.favorites, '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(n) { return n.name.split(" ")[1]}))