-
-
Save san-sekhon/30cc928bc3d51d4ea2b3e13be3580575 to your computer and use it in GitHub Desktop.
Readiness Assessment - Ben Cooley
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
//Readiness Assessment - Ben Cooley - Monday, May 1, 2017 | |
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'}]; | |
// Parts 1 -4forEach, map, filter, reduce | |
//PART 1 ----------------------------- | |
function capitalize(salesTeam) { | |
// input - array | |
//forEach | |
//item.name.first | |
//first cahr to uppercase | |
//item.name.last | |
//first cahr to Upper | |
salesTeam.forEach(function(item, index){ | |
salesTeam[index].name.first = salesTeam[index].name.first.substring(0,1).toUpperCase() + salesTeam[index].name.first.substring(1); | |
salesTeam[index].name.last = salesTeam[index].name.last.substring(0,1).toUpperCase() + salesTeam[index].name.last.substring(1); | |
}); | |
// output - no | |
} | |
// Part 2 --------------- | |
function assert(expectedBehavior, descriptionOfCorrectBehavior) { | |
if (!expectedBehavior) { | |
console.log(descriptionOfCorrectBehavior); | |
} else { | |
console.log('test passed'); | |
} | |
} | |
//Edit the below invocation of the below assert function to use JSON.stringify() where necessary to test your capitalize function. | |
console.log(JSON.stringify(salesTeam[2].name)); | |
capitalize(salesTeam); | |
assert(JSON.stringify(capitalize(salesTeam[2].name)) === JSON.stringify({first: 'Denese', last: 'Dossett'}), 'should capitalize the first letter of the first and last names'); | |
// Part 3 --------------- | |
var averageTeamSales = function (salesTeam) { | |
//input team array | |
var sum = salesTeam.reduce(function(memo, item){ | |
num = parseInt(item.sales.substring(1)); | |
return memo + num; | |
}, 0) | |
return Math.floor((sum/salesTeam.length)+0.99); | |
//reduce array | |
// parseInt(sales.substring(1)) | |
// memo += sales | |
//reduce / length of input array | |
//output = NUMBER - avg sales(rounded) | |
} | |
//PART 4 ---------------- | |
var output = averageTeamSales(salesTeam); | |
var expected = 7487; | |
assert(output === expected, 'Should accurately average the sales of the team') | |
//Part 5 ---------- | |
//"Earline Erickson: $18876" | |
var highestEarner = function (companies) { | |
var maxSales = 0; | |
var maxIndex = 0; | |
var result; | |
for (var i =0; i <companies.length; i++) { | |
var sales = parseInt(companies[i].sales.substring(1)) | |
if (sales > maxSales){ | |
maxSales = sales; | |
maxIndex = i; | |
result = '' + companies[i].name.first + ' ' + companies[i].name.last + ': ' + companies[i].sales; | |
} | |
} | |
return result; | |
//iterate | |
//if index.sales > max sales | |
// set maxSales | |
//set macindex | |
//set result = index. name.first + .name.lst + .sales | |
// return result | |
}; | |
output = highestEarner(salesTeam); | |
expected = "Earline Erickson: $18876"; | |
assert(output === expected, 'Should accurately define the teamMemeber with the highest Sales'); | |
// Part 6 ----------- | |
function filter(collection, predicate) { | |
// if predicate = true, then add item to memo | |
if (Array.isArray(collection)){ | |
return collection.reduce(function(memo, item){ | |
if (predicate(item)){ | |
memo.push(item); | |
return memo; | |
} | |
return memo; | |
}, []); | |
} | |
return collection.reduce(function(memo, item){ | |
if (predicate(item)){ | |
memo[item] = memo[item]; | |
return memo; | |
} | |
return memo; | |
}, {}); | |
} | |
// 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); | |
} | |
} | |
} | |
//And here is a sample implementation: | |
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