From 3b2a7d9ff14c10431becb5b0fb3c1368d2b144fd Mon Sep 17 00:00:00 2001 From: Chris McDermut Date: Fri, 18 Dec 2020 22:59:24 -0700 Subject: [PATCH] saving js quiz work --- challenges/jsQuiz/jsQuiz.js | 43 ++++++++++++++++++ challenges/jsQuiz/jsQuiz.test.js | 75 ++++++++++++++++++++++++++++++++ challenges/jsQuiz/jsQuizNotes.md | 51 ++++++++++++++++++++++ challenges/jsQuiz/jsQuizSpec.md | 1 + helpers/generateBoilerPlate.js | 11 +++-- 5 files changed, 175 insertions(+), 6 deletions(-) create mode 100644 challenges/jsQuiz/jsQuiz.js create mode 100644 challenges/jsQuiz/jsQuiz.test.js create mode 100644 challenges/jsQuiz/jsQuizNotes.md create mode 100644 challenges/jsQuiz/jsQuizSpec.md diff --git a/challenges/jsQuiz/jsQuiz.js b/challenges/jsQuiz/jsQuiz.js new file mode 100644 index 0000000..415493d --- /dev/null +++ b/challenges/jsQuiz/jsQuiz.js @@ -0,0 +1,43 @@ +function objectDestructureAssignment(input) { + const { name, address: { zip } } = input; + + return { + name, zip, + }; +} + +function arrayDestructureAssignment(input) { + const [first, , third] = input; + return { + first, third, + }; +} + +function arrayMethodsAdmin(input) { + const users = input; + + const adminArray = users.filter((person) => person.isAdmin === true); + return adminArray; +} + +function arrayMethodsTotalAge(input) { + const users = input; + + const reducer = (accumulator, currentValue) => accumulator + currentValue; + const totalAges = users.map((person) => parseInt(person.age, 10)).reduce(reducer, 0); + return totalAges; +} + +function dupesArray(input) { + const unique = new Set(input); + + return unique; +} + +module.exports = { + objectDestructureAssignment, + arrayDestructureAssignment, + arrayMethodsAdmin, + arrayMethodsTotalAge, + dupesArray, +}; diff --git a/challenges/jsQuiz/jsQuiz.test.js b/challenges/jsQuiz/jsQuiz.test.js new file mode 100644 index 0000000..c9f2ba7 --- /dev/null +++ b/challenges/jsQuiz/jsQuiz.test.js @@ -0,0 +1,75 @@ +const { + objectDestructureAssignment, + arrayDestructureAssignment, + arrayMethodsAdmin, + arrayMethodsTotalAge, + dupesArray, +} = require('./jsQuiz'); + +describe('objectDestructureAssignment Test', () => { + test('testOne', () => { + const input = { + name: 'John Doe', + address: { + street1: '123 Smith Street', + zip: '91362', + }, + }; + const answer = { + name: 'John Doe', + zip: '91362', + }; + const result = objectDestructureAssignment(input); + expect(result).toEqual(answer); + }); +}); + +describe('arrayDestructureAssignment Test', () => { + test('testOne', () => { + const input = ['one', 'two', 'three']; + const answer = { + first: 'one', + third: 'three', + }; + const result = arrayDestructureAssignment(input); + expect(result).toEqual(answer); + }); +}); + +describe('arrayMethodsAdmin Test', () => { + test('testOne', () => { + const input = [ + { fName: 'Jim', age: 50, isAdmin: true }, + { fName: 'Sarah', age: 20, isAdmin: false }, + { fName: 'Alice', age: 25, isAdmin: true }, + ]; + const answer = [ + { fName: 'Jim', age: 50, isAdmin: true }, + { fName: 'Alice', age: 25, isAdmin: true }, + ]; + const result = arrayMethodsAdmin(input); + expect(result).toEqual(answer); + }); +}); + +describe('arrayMethodsTotalAge Test', () => { + test('testOne', () => { + const input = [ + { fName: 'Jim', age: 50, isAdmin: true }, + { fName: 'Sarah', age: 20, isAdmin: false }, + { fName: 'Alice', age: 25, isAdmin: true }, + ]; + const answer = 95; + const result = arrayMethodsTotalAge(input); + expect(result).toEqual(answer); + }); +}); + +describe('dupesArray Test', () => { + test('testOne', () => { + const input = [0, 1, 2, 1, 0, 3, 2, 1]; + const answer = new Set([0, 1, 2, 3]); + const result = dupesArray(input); + expect(result).toEqual(answer); + }); +}); diff --git a/challenges/jsQuiz/jsQuizNotes.md b/challenges/jsQuiz/jsQuizNotes.md new file mode 100644 index 0000000..ef57df8 --- /dev/null +++ b/challenges/jsQuiz/jsQuizNotes.md @@ -0,0 +1,51 @@ +jsQuiz Notes go here! + +function objectDestructureAssignment() { + const user = { + name: "John Doe", + address: { + street1: "123 Smith Street", + zip: "91362" + } + }; + +const {name, address: {zip}} = user + + console.log(name, zip); +} + +function arrayDestructureAssignment() { + const array = ["one", "two", "three"]; + const [first, second, third] = array + console.log(first, third) +} + + +function arrayMethods() { + const users = [ + { fName: "Jim", age: 50, isAdmin: true }, + { fName: "Sarah", age: 20, isAdmin: false }, + { fName: "Alice", age: 25, isAdmin: true } + ]; + + const adminArray = users.filter((person)=>{ + return person.isAdmin === true; + }) + + // const array1 = [1, 2, 3, 4]; +const reducer = (accumulator, currentValue) => accumulator + currentValue; + console.log(adminArray) + const totalAges = users.map(person => parseInt(person.age,10)).reduce(reducer,0) + console.log(totalAges) +} + +function dupesArray() { + const array = [0, 1, 2, 1, 0, 3, 2, 1] + + console.log(unique) +} + +objectDestructureAssignment(); +arrayDestructureAssignment(); +arrayMethods(); +dupesArray(); diff --git a/challenges/jsQuiz/jsQuizSpec.md b/challenges/jsQuiz/jsQuizSpec.md new file mode 100644 index 0000000..1d7fa2c --- /dev/null +++ b/challenges/jsQuiz/jsQuizSpec.md @@ -0,0 +1 @@ +jsQuiz Spec goes here! \ No newline at end of file diff --git a/helpers/generateBoilerPlate.js b/helpers/generateBoilerPlate.js index 3d9a776..2485304 100644 --- a/helpers/generateBoilerPlate.js +++ b/helpers/generateBoilerPlate.js @@ -5,7 +5,7 @@ const fs = require('fs'); // TODO: split up challenges // TODO: add appDesignSection? // ////SETUP HERE////// -const solutionName = 'findArrayIntersect'; +const solutionName = 'jsQuiz'; // TODO: look into setting up map or enum for this /* challenge || dataStructure || algorithm || designPattern || concept */ const codeChallengeType = 'challenge'; @@ -110,14 +110,13 @@ module.exports = ${solutionName}; const algorithmTestJS = `const ${solutionName} = require('./${solutionName}') -const testOne = { - input: '', - output: '' -} - describe('${solutionName} Test', () => { test('testOne', ()=>{ + const testOne = { + input: '', + output: '' + } let result = ${solutionName}(testOne.input) expect(result).toEqual(testOne.output); });