Analysis
After completing the warmup exercises, your task is to do four more slightly challenging analyses.
How many students like sushi as their favorite food?
var LANGUAGES = ['c', 'python', 'ruby', 'haskell', 'javascript', 'java', 'c++', 'c#', 'js']
/* Parse comments to use later */
function parse_comments(comments) {
var uid = comments.user.login
var lines = comments.body.split('\r\n')
var name = (lines[0].split(':'))[1]
var major = (lines[1].split(':'))[1]
var lang = (lines[2].split(':'))[1].toLowerCase().split(/\s|,/)
lang = _.intersection((_.includes(lang, 'js')? _.remove(lang, ['js']).concat('javascript'):lang), LANGUAGES)
var food = (lines[3].split(':'))[1].toLowerCase()
return {'Uid': uid, 'Name': name, 'Major': major, 'Lang': lang, 'Food': food}
}
data.students = (data.comments).map(parse_comments)
var sushi_lovers = _.reduce(_.pluck(data.students, 'Food'), function(memo, food) {
return memo + Number(food.indexOf('sushi') != -1)
}, 0)
return [sushi_lovers]
The answer is 5
Who are the students liking Python the most?
var pythonistas = _.pluck(_.filter(data.students,
function(student) {
return _.includes(student.Lang, 'python')
}), 'Name')
return [pythonistas]
Their names are William Farmer, Heather Witte, Zach Lamb, Zhili Yang, John Cronk, Denis Kazakov, Caleb Hsu, Karen Blakemore, Sanketh S Shetty, Andrey Shprengel.
Are there more Javascript lovers or Java lovers?
var java_fans = _.filter(data.students, function(student){
return _.includes(student.Lang, 'java')
})
var javascript_fans = _.filter(data.students, function(student) {
return _.includes(student.Lang, 'javascript') || _.includes(student.Lang, 'js')
})
var java_vs_js = (java_fans.length > javascript_fans.length? 'Java': 'Javascript')
return [java_vs_js]
The answer is Java.
Who likes the same food as kjblakemore?
var names = _.filter(data.students, function(student) {
return student.food == _.result(_.find(data.students, function(student) {
return student.Uid == 'kjblakemore'
}), 'Food')
})
return [names]
Their names are .