Skip to content

Instantly share code, notes, and snippets.

@austinreuter
Created June 6, 2017 02:48
Show Gist options
  • Save austinreuter/ba7a51608d714bfd1f6b0adc7833c9b3 to your computer and use it in GitHub Desktop.
Save austinreuter/ba7a51608d714bfd1f6b0adc7833c9b3 to your computer and use it in GitHub Desktop.
//https://scrimba.com/casts/cNgwQA3
//take array of objects;
//within each object; access name property: access first last prop names;
//return array of strings: "first last";
function isTeenager(salesTeam) {
//return only names that are 18 and 13, inclusive;
//iterate through each object;
//access name prop
//access first name prop w.in name obj;
//access last name prop w/in name obj;
// combine "First last"
//push out in output array;
var ret = [];
for (var i = 0; i < salesTeam.length; i++) {
var person = salesTeam[i];
var age = person.age;
var name = person.name;
var first = name.first;
var last = name.last;
if (age <= 19 && age >= 13) {
ret.push(first + ' ' + last);
}
}
return ret;
}
function assertEqual(input, expected, testName) {
if (input === expected) {
console.log('passed')
} else {
console.log('FAILED [' + testName + '] expected ' + expected + ' but got ' + input);
}
}
function assertObjectsEqual(actual, expected, testName) {
if (JSON.stringify(actual) === JSON.stringify(expected)) {
console.log('Test passed');
} else {
console.log('Test ['+testName+'] failed: expected ', expected, ' but got, ', actual );
}
}
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'}];
var expected = ['Earline Erickson', 'Jin Jeffrey', 'Magda Mireles', 'Tama Tworek'];
assertObjectsEqual(isTeenager(salesTeam), expected, 'it renders teenagers');
function oldest(salesTeam) {
var oldest = 0;
var output = '';
for (var i = 0; i < salesTeam.length; i++) {
var person = salesTeam[i];
//iterate through our salesTeam
//access age;
var age = person.age;
var first = person.name.first;
var last = person.name.last;
//identify oldest;
if (oldest < age) {
output = first + ' ' + last;
oldest = age;
}
//update need be, not including a person that is same age;
}
return output;
}
assertObjectsEqual(oldest(salesTeam), 'Alvaro Angelos', 'it finds oldest salesperson');
function tenThousandClub(salesTeam) {
var output = [];
//iterate through each;
//access sales;
for (var i = 0; i < salesTeam.length; i++) {
var person = salesTeam[i];
var sales = person.sales;
var first = person.name.first;
var last = person.name.last;
if (salesToNumber(sales) > 10000) {
output.push(first + ' ' + last);
}
}
return output;
}
function salesToNumber(string) {
//parse into number;
return Number(string.slice(1));
}
var test = '$18876'
assertObjectsEqual(salesToNumber(test), 18876, 'it renders a number from $')
var club = ['Earline Erickson', 'Hyon Hampshire', 'Jin Jeffrey', 'Joleen Jolin', ]
assertObjectsEqual(tenThousandClub(salesTeam), club, 'it finds persons with 10k sales');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment