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 _.filter(_.pluck(data, 'name'), function(name) { if (name[0] == 'J') return true else return false })
[{name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'Ben'}]3
3
return _.size(_.filter(_.pluck(data, 'name'), function(name) { if (name == 'John') return true else return false }))
[{name: 'John Smith'}, {name: 'Mary Kay'}, {name: 'Peter Pan'}, {name: 'Ben Franklin'}][ "John", "Mary", "Peter", "Ben" ]
[ "John", "Mary", "Peter", "Ben" ]
return _.map(_.pluck(data, 'name'), function(name) { return name.split(' ')[0] })
[{name: 'John Smith'}, {name: 'Mary Smith'}, {name: 'Peter Pan'}, {name: 'Ben Smith'}][ "John", "Mary", "Ben" ]
[ "John", "Mary", "Ben" ]
return _.map(_.filter(_.pluck(data, 'name'), function(name) { if (name.split(' ')[1] == 'Smith') return true else return false }), function (name) { return 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(person) { var splitName = person.name.split(' ') return {name: splitName[1] + ', ' + splitName[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(_.pluck(data, 'gender'), function(gender) { if (gender == 'f') 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'}]2
2
return _.size(_.filter(data, function(person) { if (person.gender == 'm' && person.name.split(' ')[1] == 'Smith') 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'}]true
true
return _.size(_.filter(_.pluck(data, 'gender'), function(gender) { if (gender == 'm') return true else return false })) > _.size(_.filter(_.pluck(data, 'gender'), function(gender) { if (gender == 'f') 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 _.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 _.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
return _.all(_.pluck(data, 'age'), function(age) { if (age < 60) return true else return false })
[{name: 'John Smith', age: 54}, {name: 'Mary Smith', age: 42}, {name: 'Peter Pan', age: 15}, {name: 'Ben Smith', age: 35}]true
true
return _.some(_.pluck(data, 'age'), function(age) { if (age < 18) return true else return false })
[{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(_.pluck(data, 'favorites'), function(favorites) { return _.includes(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(person) { if (person.age > 40 && _.includes(person.favorites, 'travel')) return true else return false }), '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(person) { if (_.includes(person.favorites, 'food')) return true else return false }), function(person) { return person.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" ]
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(_.flatten(_.map(_.pluck(data, 'name'), function(name) { return name.split(' ')[1] })))