From ce1c9caa9f607dd543fc4c6c9c88e2f58457336a Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 18:01:59 -0500 Subject: [PATCH 1/9] Update checklist --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b3f5ef5c7..cbc7f3bd4 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ **Follow these steps to set up and work on your project:** -* [ ] Create a forked copy of this project. -* [ ] Add your project manager as collaborator on Github. -* [ ] Clone your OWN version of the repository (Not Lambda's by mistake!). -* [ ] Create a new branch: git checkout -b ``. +* [x] Create a forked copy of this project. +* [x] Add your project manager as collaborator on Github. +* [x] Clone your OWN version of the repository (Not Lambda's by mistake!). +* [x] Create a new branch: git checkout -b ``. * [ ] Implement the project on your newly created `` branch, committing changes regularly. * [ ] Push commits: git push origin ``. From 54cef698cdb563c3102028507ecd740d64fc8c5d Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 18:21:32 -0500 Subject: [PATCH 2/9] Object exercises --- assignments/index.html | 2 +- assignments/objects.js | 86 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/assignments/index.html b/assignments/index.html index 20a87acfa..1c9d31431 100644 --- a/assignments/index.html +++ b/assignments/index.html @@ -15,4 +15,4 @@

Check your work in the console!

- \ No newline at end of file + diff --git a/assignments/objects.js b/assignments/objects.js index 40baf8d36..406515967 100644 --- a/assignments/objects.js +++ b/assignments/objects.js @@ -3,11 +3,6 @@ // ==== Challenge 1: Writing Objects ==== // HR needs some information on the new interns put into a database. Given an id, email, first name, and gender. Create an object for each person in the company list: -// 1,mmelloy0@psu.edu,Mitzi,F -// 2,kdiben1@tinypic.com,Kennan,M -// 3,kmummery2@wikimedia.org,Keven,M -// 4,gmartinson3@illinois.edu,Gannie,M -// 5,adaine5@samsung.com,Antonietta,F // Example format of an intern object: 1,examples@you.edu,Example,F const example = { @@ -18,27 +13,80 @@ const example = { } // Write your intern objects here: +// 1,mmelloy0@psu.edu,Mitzi,F +const mitzi = { + id: 1, + "name": "Mitzi", + "email": "mmelloy0@psu.edu", + gender: "F", +}; + +// 2,kdiben1@tinypic.com,Kennan,M +const kennan = { + id: 2, + "name": "Kennan", + "email": "kdiben1@tinypic.com", + gender: "M", +}; + +// 3,kmummery2@wikimedia.org,Keven,M +const keven = { + id: 3, + "name": "Keven", + "email": "kmummery2@wikimedia.org", + gender: "M", +}; +// 4,gmartinson3@illinois.edu,Gannie,M +const gannie = { + id: 4, + "name": "Gannie", + "email": "gmartinson3@illinois.edu", + gender: "M", +}; + +// 5,adaine5@samsung.com,Antonietta,F +const antonietta = { + id: 5, + "name": "adaine5@samsung.com", + "email": "Antonietta", + gender: "F", +}; // ==== Challenge 2: Reading Object Data ==== // Once your objects are created, log out the following requests from HR into the console: // Mitzi's name +console.log(mitzi.name); // Kennan's ID +console.log(kennan.id); // Keven's email +console.log(keven.email); // Gannie's name +console.log(gannie.name); // Antonietta's Gender +console.log(antonietta.gender); // ==== Challenge 3: Object Methods ==== // Give Kennan the ability to say "Hello, my name is Kennan!" Use the console.log provided as a hint. // console.log(kennan.speak()); +kennan.speak = function() { + return `Hello, my name is ${this.name}!`; +} + +console.log(kennan.speak()); // Antonietta loves math, give her the ability to multiply two numbers together and return the product. Use the console.log provided as a hint. //console.log(antonietta.multiplyNums(3,4)); +antonietta.multiplyNums = function(x, y) { + return x * y; +} + +console.log(antonietta.multiplyNums(3, 4)); // === Great work! === Head over to the the arrays.js file or take a look at the stretch challenge @@ -49,16 +97,42 @@ const example = { // 3. Nest a grandchild object in the child object with properties for name and age. The name will be Sam and the age will be 30 // 4. Give each of the objects the ability to speak their names using the this keyword. -const parent = {} +const parent = { + name: "Susan", + age: 70, + + child: { + name: "George", + age: 50, + + grandchild: { + name: "Sam", + age: 30, + } + } +}; + +const sayName = function() { + return `My name is ${this.name}`; +}; + +const child = parent.child; +const grandchild = child.grandchild; // Log the parent object's name +console.log(parent.name); // Log the child's age +console.log(child.age); // Log the name and age of the grandchild +console.log(grandchild.name, grandchild.age); // Have the parent speak +console.log(sayName.call(parent)) // Have the child speak +console.log(sayName.call(child)); // Have the grandchild speak +console.log(sayName.call(grandchild)); From 7027e4344337b76a374d49f9d73f0916f4e0bac2 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 18:24:03 -0500 Subject: [PATCH 3/9] Add comment for sayName function --- assignments/objects.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignments/objects.js b/assignments/objects.js index 406515967..7e86f1d47 100644 --- a/assignments/objects.js +++ b/assignments/objects.js @@ -113,7 +113,7 @@ const parent = { }; const sayName = function() { - return `My name is ${this.name}`; + return `My name is ${this.name}`; // only works using .call() }; const child = parent.child; From 0e459a3e8ce135160b6dcda642816d0dd7905c7b Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 19:19:37 -0500 Subject: [PATCH 4/9] Finish array exercises --- assignments/arrays.js | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/assignments/arrays.js b/assignments/arrays.js index 0b5ecad74..7617cec66 100644 --- a/assignments/arrays.js +++ b/assignments/arrays.js @@ -63,32 +63,52 @@ let inventory = [{"id":1,"car_make":"Lincoln","car_model":"Navigator","car_year" // ==== Challenge 1 ==== // The dealer can't recall the information for a car with an id of 33 on his lot. Help the dealer find out which car has an id of 33 by logging the car's year, make, and model in the console log provided to you below: -console.log(`Car 33 is a *car year goes here* *car make goes here* *car model goes here*` ); +const car33 = inventory.find(car => car.id == 33); + +console.log(`Car 33 is a ${car33.car_year} ${car33.car_make} ${car33.car_model}` ); // ==== Challenge 2 ==== // The dealer needs the information on the last car in their inventory. What is the make and model of the last car in the inventory? Log the make and model into the console. -let lastCar = 0; -console.log(); +let {car_make, car_model} = inventory[inventory.length - 1]; +console.log(`${car_make} ${car_model}`); // ==== Challenge 3 ==== // The marketing team wants the car models listed alphabetically on the website. Sort all the car model names into alphabetical order and log the results in the console let carModels = []; -console.log(); +for (let i = 0; i < inventory.length; i++) carModels.push(inventory[i].car_model); +carModels.sort(); +console.log(carModels); // ==== Challenge 4 ==== // The accounting team needs all the years from every car on the lot. Create a new array from the dealer data containing only the car years and log the result in the console. let carYears = []; -console.log(); +for (let i = 0; i < inventory.length; i++) carYears.push(inventory[i].car_year); +console.log(carYears); // ==== Challenge 5 ==== // The car lot manager needs to find out how many cars are older than the year 2000. Using the carYears array you just created, find out how many cars were made before the year 2000 by populating the array oldCars and logging it's length. let oldCars = []; -console.log(); +for (let i = 0; i < inventory.length; i++) { + if (inventory[i].car_year < 2000) oldCars.push(inventory[i]); +} +console.log(oldCars.length); // ==== Challenge 6 ==== -// A buyer is interested in seeing only BMW and Audi cars within the inventory. Return an array that only contains BMW and Audi cars. Once you have populated the BMWAndAudi array, use JSON.stringify() to show the results of the array in the console. +// A buyer is interested in seeing only BMW and Audi cars within the inventory. Return an array that only contains BMW and Audi cars. Once you have populated the BMWAndAudi array, use JSON.stringify() to show the results of the array in the console. let BMWAndAudi = []; -console.log(); - - - +// for (let i = 0; i < inventory.length; i++) { // bored of using for loops +// if (inventory[i].car_make === "BMW" || +// inventory[i].car_make === "Audi") { +// BMWAndAudi.push(inventory[i]); +// } +// } +let i = 0; +while (i != -1) { + let snobbyCarIndex = inventory.findIndex(car => { + return car.car_make === "BMW" || car.car_make === "Audi" + }); + + BMWAndAudi.push(inventory.splice(snobbyCarIndex, 1)[0]); + i = snobbyCarIndex; +} +console.log(JSON.stringify(BMWAndAudi)); From aa28f21296e25bbfb4d30cc47ee1a2bae0ce5765 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 20:04:01 -0500 Subject: [PATCH 5/9] Fix #5 to use carYears array --- assignments/arrays.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assignments/arrays.js b/assignments/arrays.js index 7617cec66..2f4d0ceaf 100644 --- a/assignments/arrays.js +++ b/assignments/arrays.js @@ -88,8 +88,8 @@ console.log(carYears); // ==== Challenge 5 ==== // The car lot manager needs to find out how many cars are older than the year 2000. Using the carYears array you just created, find out how many cars were made before the year 2000 by populating the array oldCars and logging it's length. let oldCars = []; -for (let i = 0; i < inventory.length; i++) { - if (inventory[i].car_year < 2000) oldCars.push(inventory[i]); +for (let i = 0; i < carYears.length; i++) { + if (carYears[i] < 2000) oldCars.push(carYears[i]); } console.log(oldCars.length); From a48f197ce6904a35494496fe05d54a7fe29c0c38 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 20:24:35 -0500 Subject: [PATCH 6/9] Finish function exercises --- assignments/function-conversion.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/assignments/function-conversion.js b/assignments/function-conversion.js index 55f57ef62..47a291d04 100644 --- a/assignments/function-conversion.js +++ b/assignments/function-conversion.js @@ -3,22 +3,29 @@ // let myFunction = function () { // console.log("Function was invoked!"); // }; -// myFunction(); + +let myFunction = () => console.log("Function was invoked!"); +myFunction(); // let anotherFunction = function (param) { // return param; // }; -// anotherFunction("Example"); + +let anotherFunction = param => param; +anotherFunction("Example"); // let add = function (param1, param2) { // return param1 + param2; // }; -// add(1,2); +let add = (param1, param2) => param1 + param2; +add(1,2); // let subtract = function (param1, param2) { // return param1 - param2; // }; -// subtract(1,2); + +let subtract = (param1, param2) => param1 - param2; +subtract(1,2); // Stretch @@ -27,4 +34,12 @@ // const triple = exampleArray.map(function (num) { // return num * 3; // }); -// console.log(triple); \ No newline at end of file +let triple = numbers => { + const tripled = []; + for (let i = 0; i < numbers.length; i++) { + tripled.push(numbers[i] * 3); + } + + return tripled; +}; +console.log(triple([1, 2, 3, 4])); From 1b73d8a8262c6d5f21c563962e1e36422bd81a71 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 20:26:53 -0500 Subject: [PATCH 7/9] Update checklist --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cbc7f3bd4..102405d4e 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,13 @@ * [x] Add your project manager as collaborator on Github. * [x] Clone your OWN version of the repository (Not Lambda's by mistake!). * [x] Create a new branch: git checkout -b ``. -* [ ] Implement the project on your newly created `` branch, committing changes regularly. -* [ ] Push commits: git push origin ``. +* [x] Implement the project on your newly created `` branch, committing changes regularly. +* [x] Push commits: git push origin ``. **Follow these steps for completing your project.** -* [ ] Submit a Pull-Request to merge Branch into master (student's Repo). **Please don't merge your own pull request** -* [ ] Add your project manager as a reviewer on the pull-request +* [x] Submit a Pull-Request to merge Branch into master (student's Repo). **Please don't merge your own pull request** +* [x] Add your project manager as a reviewer on the pull-request * [ ] Your project manager will count the project as complete by merging the branch back into master. ## Assignment Description @@ -46,7 +46,7 @@ The [arrays.js](assignments/arrays.js) assignment takes us through a large data ### Arrow Function Syntax -* [ ] Arrow Function Syntax - [Check out this awesome guide for ES6 arrow syntax](https://medium.freecodecamp.org/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26). You will see more and more arrow functions as you progress deeper into JavaScript. Use the [function-conversion.js](assignments/function-conversion.js) file as a helper challenge to showcase some of the differences between ES5 and ES6 syntax. +* [x] Arrow Function Syntax - [Check out this awesome guide for ES6 arrow syntax](https://medium.freecodecamp.org/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26). You will see more and more arrow functions as you progress deeper into JavaScript. Use the [function-conversion.js](assignments/function-conversion.js) file as a helper challenge to showcase some of the differences between ES5 and ES6 syntax. ### Stretch From ee7c6061550f7d732a03dd5fd05fd21ffaed8108 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 23:01:10 -0500 Subject: [PATCH 8/9] Fix bug in number 6 --- assignments/arrays.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/assignments/arrays.js b/assignments/arrays.js index 2f4d0ceaf..5a92f187d 100644 --- a/assignments/arrays.js +++ b/assignments/arrays.js @@ -103,12 +103,17 @@ let BMWAndAudi = []; // } // } let i = 0; -while (i != -1) { +while (i > -1) { let snobbyCarIndex = inventory.findIndex(car => { - return car.car_make === "BMW" || car.car_make === "Audi" + return car.car_make === "BMW" || car.car_make === "Audi"; }); - - BMWAndAudi.push(inventory.splice(snobbyCarIndex, 1)[0]); + console.log(snobbyCarIndex); + console.log(inventory[snobbyCarIndex]); + + if (snobbyCarIndex > -1) { + BMWAndAudi.push(inventory.splice(snobbyCarIndex, 1)[0]); + } + i = snobbyCarIndex; } console.log(JSON.stringify(BMWAndAudi)); From 4ac38d9dc240bae0c15e749ab333c5353c4d5299 Mon Sep 17 00:00:00 2001 From: Jason Barr Date: Wed, 27 Mar 2019 23:01:31 -0500 Subject: [PATCH 9/9] Refactor object to have nested methods that use global function --- assignments/objects.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/assignments/objects.js b/assignments/objects.js index 7e86f1d47..11bc633a1 100644 --- a/assignments/objects.js +++ b/assignments/objects.js @@ -100,14 +100,23 @@ console.log(antonietta.multiplyNums(3, 4)); const parent = { name: "Susan", age: 70, + speak: function() { + console.log(sayName.call(this)); + }, child: { name: "George", age: 50, + speak: function() { + console.log(sayName.call(this)); + }, grandchild: { name: "Sam", age: 30, + speak: function () { + console.log(sayName.call(this)); + }, } } }; @@ -116,23 +125,21 @@ const sayName = function() { return `My name is ${this.name}`; // only works using .call() }; -const child = parent.child; -const grandchild = child.grandchild; - // Log the parent object's name console.log(parent.name); + // Log the child's age -console.log(child.age); +console.log(parent.child.age); // Log the name and age of the grandchild -console.log(grandchild.name, grandchild.age); +console.log(`I'm ${parent.child.grandchild.name} and I am ${parent.child.grandchild.age}`); // Have the parent speak -console.log(sayName.call(parent)) +parent.speak(); // Have the child speak -console.log(sayName.call(child)); +parent.child.speak(); // Have the grandchild speak -console.log(sayName.call(grandchild)); +parent.child.grandchild.speak();