Last active
May 2, 2017 18:14
-
-
Save kcoyner/cab10450e3c2a5e971378226026285f2 to your computer and use it in GitHub Desktop.
Completed version of the assessment - not finished within time limits
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* This is not my submitted version. That version can be found at: | |
https://gist.github.com/kcoyner/8ddc95ad78b022b1c58363b2ef90e080 | |
I wanted to upload this version as it is 100% complete. I was able to complete all problems, | |
just not in the allocated amount of time. I got hung up on Part 5 on a stupid mistake, and | |
Part 6 took me another 15 minutes or so. Thank you. Kevin.] | |
*/ | |
var salesTeam = [{name: {first: 'aleen', last: 'atkins'}, age: 26, sales: '$2314'}, | |
{name: {first: 'alvaro', last: 'angelos'}, age: 55, sales: '$1668'}, | |
{name: {first: 'denese', last: 'dossett'}, age: 29, sales: '$9248'}, | |
{name: {first: 'douglas', last: 'denney'}, age: 53, sales: '$5058'}, | |
{name: {first: 'earline', last: 'erickson'}, age: 19, sales: '$18876'}, | |
{name: {first: 'herman', last: 'hazell'}, age: 25, sales: '$2746'}, | |
{name: {first: 'homer', last: 'hirth'}, age: 26, sales: '$474'}, | |
{name: {first: 'hwa', last: 'heidt'}, age: 53, sales: '$9607'}, | |
{name: {first: 'hyon', last: 'hampshire'}, age: 46, sales: '$13598'}, | |
{name: {first: 'issac', last: 'ingerson'}, age: 45, sales: '$5225'}, | |
{name: {first: 'jeraldine', last: 'joplin'}, age: 39, sales: '$2891'}, | |
{name: {first: 'jin', last: 'jeffrey'}, age: 17, sales: '$14402'}, | |
{name: {first: 'joleen', last: 'jolin'}, age: 45, sales: '$15736'}, | |
{name: {first: 'jude', last: 'jarrett'}, age: 53, sales: '$7557'}, | |
{name: {first: 'magda', last: 'mireles'}, age: 18, sales: '$1498'}, | |
{name: {first: 'mistie', last: 'montealegre'}, age: 31, sales: '$6920'}, | |
{name: {first: 'nancy', last: 'napoli'}, age: 49, sales: '$5255'}, | |
{name: {first: 'regine', last: 'rohrbaugh'}, age: 33, sales: '$7881'}, | |
{name: {first: 'rolando', last: 'riebel'}, age: 35, sales: '$8573'}, | |
{name: {first: 'scarlett', last: 'stagg'}, age: 36, sales: '$7126'}, | |
{name: {first: 'sherron', last: 'strawn'}, age: 36, sales: '$8848'}, | |
{name: {first: 'susan', last: 'shilling'}, age: 29, sales: '$8542'}, | |
{name: {first: 'tama', last: 'tworek'}, age: 16, sales: '$9200'}, | |
{name: {first: 'tonisha', last: 'taunton'}, age: 41, sales: '$5219'}, | |
{name: {first: 'vergie', last: 'villescas'}, age: 25, sales: '$8712'} | |
]; | |
/** Part 1 **/ | |
function capitalize(salesTeam) { | |
// loop thru the array and change each first and last name | |
salesTeam.forEach(member => { | |
member.name.first = member.name.first.slice(0,1).toUpperCase() + member.name.first.slice(1); | |
member.name.last = member.name.last.slice(0,1).toUpperCase() + member.name.last.slice(1); | |
}); | |
} | |
/** Part 2 **/ | |
function assert(expectedBehavior, descriptionOfCorrectBehavior) { | |
if (!expectedBehavior) { | |
console.log(descriptionOfCorrectBehavior); | |
} else { | |
console.log('test passed'); | |
} | |
} | |
capitalize(salesTeam); | |
assert(JSON.stringify(salesTeam[2].name) === JSON.stringify({first: 'Denese', last: 'Dossett'}), 'it returns capitalized first and last names'); | |
/** Part 3 **/ | |
var averageTeamSales = function (salesTeam) { | |
var salesSum = salesTeam.reduce((sum, member) => { | |
return sum + salesToNumber(member.sales); | |
}, 0); | |
return Math.round(salesSum / salesTeam.length); | |
}; | |
function salesToNumber(salesString){ | |
return Number.parseInt(salesString.slice(1)); | |
} | |
console.log(averageTeamSales(salesTeam)); | |
/** Part 4 **/ | |
function assert(expectedBehavior, descriptionOfCorrectBehavior) { | |
if (!expectedBehavior) { | |
console.log(descriptionOfCorrectBehavior); | |
} else { | |
console.log('test passed'); | |
} | |
} | |
assert(averageTeamSales(salesTeam) === 7487, 'it should return average sales for the team rounded up'); | |
/** Part 5 **/ | |
highestEarner = function (companies) { | |
// check for the highest earner in the sale team | |
var salesTeam = companies.sort((a, b) => { | |
return salesToNumber(a.sales) - salesToNumber(b.sales); | |
}); | |
var star = (salesTeam.slice(salesTeam.length - 1)); | |
// write out that person's info in proper format | |
return `${star[0].name.first} ${star[0].name.last}: ${star[0].sales}`; | |
}; | |
console.log(highestEarner(salesTeam)); | |
assert(highestEarner(salesTeam) === "Earline Erickson: $18876", 'it should return a properly formatted string for the highest earner'); | |
/** Part 6 **/ | |
function filter2(collection, predicate) { | |
/* version made only with each -- see reduce version below */ | |
var result = []; | |
each(collection, function(val){ | |
if (predicate(val)) { | |
result.push(val); | |
} | |
}) | |
return result; | |
} | |
function filter(collection, predicate) { | |
var result = []; | |
reduce(each(collection, function(val){ | |
if (predicate(val)) { | |
result.push(val); | |
} | |
}), predicate, []) | |
return result; | |
} | |
// DO NOT ADJUST BELOW FUNCTIONS | |
function reduce(collection, accumulator, initialValue) { | |
each(collection, function(val) { | |
if (initialValue !== undefined) { | |
initialValue = accumulator(initialValue, val); | |
} else { | |
initialValue = val; | |
} | |
}); | |
return initialValue; | |
} | |
function each (collection, callback) { | |
if (Array.isArray(collection)) { | |
for (let i = 0; i < collection.length; i++) { | |
callback(collection[i], i, collection); | |
} | |
} else { | |
for (let key in collection) { | |
callback(collection[key], key, collection); | |
} | |
} | |
} | |
var arr = [1, 2, 3, 4]; | |
var obj = { | |
a: 1, | |
b: 2, | |
c: 3, | |
d: 4 | |
} | |
function isEven(val) { | |
return val % 2 === 0; | |
} | |
function isOdd(val) { | |
return !isEven(val); | |
} | |
var output1 = filter(arr, isEven); | |
console.log(output1); // --> [2, 4]; | |
var output2 = filter(obj, isOdd); | |
console.log(output2); // --> [1, 3]; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment