From db6dc7ce4b7277652b6ff3ed8bb6927bbd9da16a Mon Sep 17 00:00:00 2001 From: Austin Stevens Date: Wed, 10 Jan 2018 13:01:06 -0500 Subject: [PATCH] All specs passing --- exercises/001.js | 8 ++++++-- exercises/002.js | 6 +++++- exercises/003.js | 9 ++++++--- exercises/004.js | 7 +++---- exercises/005.js | 23 ++++++++++++++++++++--- exercises/006.js | 13 +++++++++++-- exercises/007.js | 24 +++++++++++++++++++----- 7 files changed, 70 insertions(+), 20 deletions(-) diff --git a/exercises/001.js b/exercises/001.js index 962fdaa..3d49e8f 100644 --- a/exercises/001.js +++ b/exercises/001.js @@ -23,5 +23,9 @@ function transformFirstAndLast(array) { */ function transformFirstAndLast(array) { - //your code here -} \ No newline at end of file + var first = array[0]; + var last = array[array.length - 1]; + var obj = {}; + obj[first] = last; + return obj; +} diff --git a/exercises/002.js b/exercises/002.js index 71af29a..968d82e 100644 --- a/exercises/002.js +++ b/exercises/002.js @@ -26,5 +26,9 @@ function getAllKeys(obj) { */ function getAllKeys(obj){ - // your code here + var arr = []; + for (val in obj) { + arr.push(val); + } + return arr; } diff --git a/exercises/003.js b/exercises/003.js index 8f0a5d4..54932e6 100644 --- a/exercises/003.js +++ b/exercises/003.js @@ -13,13 +13,16 @@ Function's return value (output): Do not change the input string. Assume that all elements in the array will be of type 'string'. -Note that the input may have a different number of elements than the given sample. +Note that the input may have a different number of elements than the given sample. For instance, if the input had 6 values instead of 4, your code should flexibly accommodate that. Starter Code: */ function fromListToObject(array) { - // your code here - + var obj = {}; + array.forEach( function (element) { + obj[element[0]] = element[1]; + }); + return obj; } diff --git a/exercises/004.js b/exercises/004.js index caed05d..9aa20b6 100644 --- a/exercises/004.js +++ b/exercises/004.js @@ -11,7 +11,7 @@ Example input: Function's return value (output): ['Krysten', 33, false] -Note that the input may have a different number of keys and values than the given sample. +Note that the input may have a different number of keys and values than the given sample. E.g. it should also handle an input like: { @@ -28,6 +28,5 @@ Starter Code */ function listAllValues(obj) { - // your code here - -} \ No newline at end of file + return Object.values(obj); +} diff --git a/exercises/005.js b/exercises/005.js index eeccb70..c2f1804 100644 --- a/exercises/005.js +++ b/exercises/005.js @@ -17,7 +17,7 @@ Given that input, the return value should look like this: {firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'} ] -Note that the input may have a different number of rows or different keys than the given sample. +Note that the input may have a different number of rows or different keys than the given sample. For example, let's say the HR department adds a "tshirtSize" field to each employee record. Your code should flexibly accommodate that. @@ -25,6 +25,23 @@ Starter Code : */ function transformEmployeeData(array) { - // your code here - + var reformat = []; + array.forEach ( function (element) { + var obj = {}; + element.forEach( function (element2) { + var key = element2[0]; + var val = element2[1]; + obj[key] = val; + }); + reformat.push(obj); + }); + return reformat; } +transformEmployeeData([ + [ + ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk'] + ], + [ + ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager'] + ] +]); diff --git a/exercises/006.js b/exercises/006.js index dca4c27..ca05991 100644 --- a/exercises/006.js +++ b/exercises/006.js @@ -22,5 +22,14 @@ Starter Code: */ function convertObjectToList(obj) { - // your code here -} \ No newline at end of file + var arr = []; + for (val in obj) { + arr.push([val, obj[val]]); + } + return arr; +} +convertObjectToList({ + name: 'Holly', + age: 35, + role: 'producer' +}); diff --git a/exercises/007.js b/exercises/007.js index 094e8b5..8be52a2 100644 --- a/exercises/007.js +++ b/exercises/007.js @@ -1,11 +1,11 @@ /* Write a function called "greetCustomer". -Given a name, "greetCustomer" returns a greeting based on how many times that customer has visited the restaurant. Please refer to the customerData object. +Given a name, "greetCustomer" returns a greeting based on how many times that customer has visited the restaurant. Please refer to the customerData object. The greeting should be different, depending on the name on their reservation. -Case 1 - Unknown customer ( Name is not present in customerData ): +Case 1 - Unknown customer ( Name is not present in customerData ): var output = greetCustomer('Terrance'); console.log(output); // --> 'Welcome! Is this your first time?' @@ -49,8 +49,22 @@ var customerData = { function greetCustomer(firstName) { var greeting = ''; - // your code here - + var visits; + if (customerData[firstName]) { + visits = customerData[firstName].visits; + }; + switch (true) { + case visits === undefined: + greeting = 'Welcome! Is this your first time?'; + break; + case visits === 1: + greeting = 'Welcome back, ' + firstName + '! We\'re glad you liked us the first time!'; + break; + case visits > 1: + greeting = 'Welcome back, ' + firstName + '! So glad to see you again!'; + break; + default: + console.log('Invalid response'); + } return greeting; } -