Skip to content

Instantly share code, notes, and snippets.

@d-kang
Created May 2, 2017 04:06
Show Gist options
  • Save d-kang/154b9671c284ae676d6710e9cc697f6b to your computer and use it in GitHub Desktop.
Save d-kang/154b9671c284ae676d6710e9cc697f6b to your computer and use it in GitHub Desktop.
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