From 11cb03435920102c667f77343d4217baea218e81 Mon Sep 17 00:00:00 2001 From: Aasa-Christian Date: Tue, 17 Sep 2019 19:00:13 -0400 Subject: [PATCH] completed mvp --- assignments/array-methods.js | 21 ++++++++++++++--- assignments/callbacks.js | 45 ++++++++++++++++++++++++++++++------ assignments/closure.js | 20 ++++++++++++---- 3 files changed, 71 insertions(+), 15 deletions(-) diff --git a/assignments/array-methods.js b/assignments/array-methods.js index f3862361e..bf628b60d 100644 --- a/assignments/array-methods.js +++ b/assignments/array-methods.js @@ -58,27 +58,42 @@ const runners = [ // ==== Challenge 1: Use .forEach() ==== // The event director needs both the first and last names of each runner for their running bibs. Combine both the first and last names and populate a new array called `fullNames`. This array will contain just strings. let fullNames = []; + +runners.forEach (elements =>{ +fullNames.push(`${elements.first_name} ${elements.last_name}`) +}); console.log(fullNames); // ==== Challenge 2: Use .map() ==== // The event director needs to have all the runners' first names in uppercase because the director BECAME DRUNK WITH POWER. Populate an array called `firstNamesAllCaps`. This array will contain just strings. -let firstNamesAllCaps = []; +let firstNamesAllCaps =runners.map(para => { + return para.first_name.toUpperCase() +}) console.log(firstNamesAllCaps); // ==== Challenge 3: Use .filter() ==== // The large shirts won't be available for the event due to an ordering issue. We need a filtered version of the runners array, containing only those runners with large sized shirts so they can choose a different size. This will be an array of objects. -let runnersLargeSizeShirt = []; +let runnersLargeSizeShirt = runners.filter( para2 => { + return para2.shirt_size === 'L'; +} +) + console.log(runnersLargeSizeShirt); // ==== Challenge 4: Use .reduce() ==== // The donations need to be tallied up and reported for tax purposes. Add up all the donations and save the total into a ticketPriceTotal variable. let ticketPriceTotal = 0; -console.log(ticketPriceTotal); + +ticketPriceTotal = runners.reduce(function(acc, item){ + return acc + item.donation; +} , 0) +console.log(ticketPriceTotal) // ==== Challenge 5: Be Creative ==== // Now that you have used .forEach(), .map(), .filter(), and .reduce(). I want you to think of potential problems you could solve given the data set and the 5k fun run theme. Try to create and then solve 3 unique problems using one or many of the array methods listed above. // Problem 1 +// 5K // Problem 2 diff --git a/assignments/callbacks.js b/assignments/callbacks.js index cb72e70c9..8f62c82c7 100644 --- a/assignments/callbacks.js +++ b/assignments/callbacks.js @@ -41,29 +41,60 @@ const items = ['Pencil', 'Notebook', 'yo-yo', 'Gum']; function getLength(arr, cb) { // getLength passes the length of the array into the callback. + cb(arr.length); } +getLength(items,(arrayLength) =>{ + console.log(arrayLength); +}); function last(arr, cb) { + cb(arr[arr.length - 1]) + // last passes the last item of the array into the callback. + } +last(items, (arrayLast) => { + console.log(arrayLast); +}); function sumNums(x, y, cb) { + return cb(x, y); + } // sumNums adds two numbers (x, y) and passes the result to the callback. -} +const add = function(x,y){ + return x + y; +}; + +console.log(add(4,6,)); function multiplyNums(x, y, cb) { + return cb(x,y); // multiplyNums multiplies two numbers and passes the result to the callback. } +const mult = function(x,y){ + return x * y; +}; +console.log(mult(4,6,)) function contains(item, list, cb) { + for (i=0; i< list.length; i++){ + if (item === list[i]) { + return cb(true); + } + } + return cb(false) +} +contains('Gum', items, function (book){ + console.log(book); +}) + // contains checks if an item is present inside of the given array/list. // Pass true to the callback if it is, otherwise pass false. -} /* STRETCH PROBLEM */ -function removeDuplicates(array, cb) { - // removeDuplicates removes all duplicate values from the given array. - // Pass the duplicate free array to the callback function. - // Do not mutate the original array. -} +// function removeDuplicates(array, cb) { +// // removeDuplicates removes all duplicate values from the given array. +// // Pass the duplicate free array to the callback function. +// // Do not mutate the original array. +// } diff --git a/assignments/closure.js b/assignments/closure.js index 4b399c098..90ad689ba 100644 --- a/assignments/closure.js +++ b/assignments/closure.js @@ -1,4 +1,12 @@ // ==== Challenge 1: Write your own closure ==== + +function country( countryName){ + console.log(`I'm from ${countryName}.`) +} + +console.log(country("America")) + + // Write a closure of your own creation. // Keep it simple! Remember a closure is just a function // that manipulates variables defined in the outer scope. @@ -10,6 +18,7 @@ // ==== Challenge 2: Implement a "counter maker" function ==== const counterMaker = () => { + // IMPLEMENTATION OF counterMaker: // 1- Declare a `count` variable with a value of 0. We will be mutating it, so declare it using `let`! // 2- Declare a function `counter`. It should increment and return `count`. @@ -17,6 +26,7 @@ const counterMaker = () => { // "closes over" the `count` variable. It can "see" it in the parent scope! // 3- Return the `counter` function. }; + // Example usage: const myCounter = counterMaker(); // myCounter(); // 1 // myCounter(); // 2 @@ -26,8 +36,8 @@ const counterMaker = () => { // will refuse to go over the limit, and start back at 1. // ==== Challenge 4: Create a counter function with an object that can increment and decrement ==== -const counterFactory = () => { - // Return an object that has two methods called `increment` and `decrement`. - // `increment` should increment a counter variable in closure scope and return it. - // `decrement` should decrement the counter variable and return it. -}; +// const counterFactory = () => { +// // Return an object that has two methods called `increment` and `decrement`. +// // `increment` should increment a counter variable in closure scope and return it. +// // `decrement` should decrement the counter variable and return it. +//};