Created
May 2, 2017 04:06
-
-
Save d-kang/154b9671c284ae676d6710e9cc697f6b to your computer and use it in GitHub Desktop.
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
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'}]; | |
// age and total sales | |
// capitalize first and last | |
var capitalize = function(salesTeam) { | |
// for each person in salesTeam | |
salesTeam.forEach(function(item, index, array) { | |
var firstName = item.name.first; | |
var firstLength = firstName.length | |
var lastName = item.name.last | |
var lastLength = lastName.length | |
// access first name and reassign | |
item.name.first = firstName.slice(0,1).toUpperCase() + firstName.slice(1, firstLength) | |
// access second name and reassign | |
item.name.last = lastName.slice(0,1).toUpperCase() + lastName.slice(1, lastLength); | |
}) | |
} | |
console.log(capitalize(salesTeam)); | |
console.log(salesTeam) | |
function assert(expectedBehavior, descriptionOfCorrectBehavior) { | |
if (!expectedBehavior) { | |
console.log(descriptionOfCorrectBehavior); | |
} else { | |
console.log('test passed'); | |
} | |
} | |
capitalize(salesTeam); | |
console.log(assert(JSON.stringify(salesTeam[2].name) === JSON.stringify({first: 'Denese', last: 'Dossett'}), 'should capitalize the first letter of the first and last names')); | |
var averageTeamSales = function(salesTeam) { | |
// for each sales in team | |
var sum = salesTeam.reduce(function(acc, item, index, array) { | |
// collect all numbers added | |
var salesNumber = item.sales | |
salesNumber = item.sales.slice(1, salesNumber.length) | |
salesNumber = Number(salesNumber) | |
return acc + salesNumber; | |
}, 0) | |
//console.log('sum', sum) | |
var average = Math.ceil(sum / salesTeam.length ) | |
// divide by the number of teammembers | |
return average | |
} | |
//single number | |
var salesNumber = '$8712'; | |
salesNumber = salesNumber.slice(1, salesNumber.length) | |
console.log(parseInt(salesNumber), 'it should convert to number ') | |
console.log(typeof averageTeamSales(salesTeam) === 'number', 'should return number that is the sum of all sales'); | |
console.log(assert(averageTeamSales(salesTeam) === 7487, 'it should returnthe sum of all sales')) | |
console.log(averageTeamSales(salesTeam), 'output of avg tea sales') | |
var highestEarner = function(salesTeam) { | |
// sort by highest earner | |
var sortedList = salesTeam.sort(function(a, b) { | |
var salesB = b.sales | |
salesB = Number(salesB.slice(1, salesB.length)) | |
var salesA = a.sales | |
salesA = Number(salesA.slice(1, salesA.length)) | |
return salesB - salesA | |
}) | |
var highest = sortedList[0] | |
return `${highest.name.first} ${highest.name.last}: ${highest.sales}` | |
} | |
console.log(highestEarner(salesTeam)) | |
console.log(assert(highestEarner(salesTeam) === 'Earline Erickson: $18876', `should render highest earning team`)) | |
// firstName, lastname and amount of sales | |
function filter(collection, predicate) { | |
// Your code below. You must use reduce in your solution. | |
return reduce(collection, function(acc, item, index, array) { | |
if (predicate(item, index, array)) { | |
acc.push(item) | |
} | |
return acc; | |
}, []) | |
} | |
// 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]; | |
var assertArraysEqual = function(arr1, arr2) { | |
if (arr1.length === arr2.length) { | |
return arr1.every(function(item, index) { | |
return item === arr2[index]; | |
}) | |
} | |
} | |
var testfilter1 = assertArraysEqual(output1, [2,4]) | |
console.log(assert(testfilter1, 'should test for array equality of filter function')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment