From 52c65d2e79034e1c4a52c6e818615a3b44cc1066 Mon Sep 17 00:00:00 2001 From: Ryan Hamblin Date: Wed, 9 Aug 2017 07:39:29 -0600 Subject: [PATCH 1/2] added solutions --- src/project-1.js | 103 ++++++++++++-------------------- src/project-2.js | 150 ++++++++++++++++++++++++++++++----------------- src/project-3.js | 102 ++++++++++++++++---------------- src/project-4.js | 24 +++++--- 4 files changed, 199 insertions(+), 180 deletions(-) diff --git a/src/project-1.js b/src/project-1.js index dc26cfb..8a21461 100644 --- a/src/project-1.js +++ b/src/project-1.js @@ -1,144 +1,115 @@ -// Do not change any of the funcxtion names - const multiplyByTen = (num) => { - // return num after multiplying it by ten - // code here + return num * 10; }; const subtractFive = (num) => { - // return num after subtracting five - // code here + return num - 5; }; const areSameLength = (str1, str2) => { - // return true if the two strings have the same length - // otherwise return false - // code here + return str1.length === str2.length; }; const areEqual = (x, y) => { - // return true if x and y are the same - // otherwise return false - // code here + return x === y; }; const lessThanNinety = (num) => { - // return true if num is less than ninety - // otherwise return false - // code here + if (num < 90) { + return true; + } + return false; }; const greaterThanFifty = (num) => { - // return true if num is greater than fifty - // otherwise return false - // code here + if (num > 50) { + return true; + } + return false; }; const add = (x, y) => { - // add x and y together and return the value - // code here + return x + y; }; const subtract = (x, y) => { - // subtract y from x and return the value - // code here + return x - y; }; const divide = (x, y) => { - // divide x by y and return the value - // code here + return x / y; }; const multiply = (x, y) => { - // multiply x by y and return the value - // code here + return x * y; }; const getRemainder = (x, y) => { - // return the remainder from dividing x by y - // code here + return x % y; }; const isEven = (num) => { - // return true if num is even - // otherwise return false - // code here + if (num % 2 === 0) { + return true; + } + return false; }; const isOdd = (num) => { - // return true if num is odd - // otherwise return false - // code here + if (num % 2 === 0) { + return false; + } + return true; }; const square = (num) => { - // square num and return the new value - // code here + return num * num; }; const cube = (num) => { - // cube num and return the new value - // code here + return num * num * num; }; const raiseToPower = (num, exponent) => { - // raise num to whatever power is passed in as exponent - // code here + return num ** exponent; }; const roundNumber = (num) => { - // round num and return it - // code here + return Math.round(num); }; const roundUp = (num) => { - // round num up and return it - // code here + return Math.ceil(num); }; const addExclamationPoint = (str) => { - // add an exclamation point to the end of str and return the new string - // 'hello world' -> 'hello world!' - // code here + return (str += '!'); }; const combineNames = (firstName, lastName) => { - // return firstName and lastName combined as one string and separated by a space. - // 'Lambda', 'School' -> 'Lambda School' - // code here + return `${firstName} ${lastName}`; }; const getGreeting = (name) => { - // Take the name string and concatenate other strings onto it so it takes the following form: - // 'Sam' -> 'Hello Sam!' - // code here + return `Hello ${name}!`; }; -// If you can't remember these area formulas then head over to Google or look at the test code. - const getRectangleArea = (length, width) => { - // return the area of the rectangle by using length and width - // code here + return length * width; }; const getTriangleArea = (base, height) => { - // return the area of the triangle by using base and height - // code here + return 0.5 * base * height; }; const getCircleArea = (radius) => { - // return the rounded area of the circle given the radius - // code here + return Math.round(radius * radius * Math.PI); }; const getRectangularPrismVolume = (length, width, height) => { - // return the volume of the 3D rectangular prism given the length, width, and height - // code here + return width * height * length; }; -// Do not modify code below this line. -// -------------------------------- - module.exports = { multiplyByTen, subtractFive, diff --git a/src/project-2.js b/src/project-2.js index 5fe0047..02f5890 100644 --- a/src/project-2.js +++ b/src/project-2.js @@ -1,110 +1,154 @@ -// Do not change any of the function names - const getBiggest = (x, y) => { - // x and y are integers. Return the larger integer - // if they are the same return either one + if (x > y) { + return x; + } else if (x === y) { + return y; + } + return y; }; const greeting = (language) => { - // return a greeting for three different languages: - // language: 'German' -> 'Guten Tag!' - // language: 'Spanish' -> 'Hola!' - // language: 'Chinese' -> 'Ni Hao!' - // if language is undefined return 'Hello!' + switch (language) { + case 'German': + return 'Guten Tag!'; + case 'Spanish': + return 'Hola!'; + case 'Chinese': + return 'Ni Hao!'; + default: + return 'Hello!'; + } }; const isTenOrFive = (num) => { - // return true if num is 10 or 5 - // otherwise return false + if (num === 10 || num === 5) { + return true; + } + return false; }; const isInRange = (num) => { - // return true if num is less than 50 and greater than 20 + if (num < 50 && num > 20) { + return true; + } + return false; }; const isInteger = (num) => { - // return true if num is an integer - // 0.8 -> false - // 1 -> true - // -10 -> true - // otherwise return false - // hint: you can solve this using Math.floor + if (Math.floor(num) === num) { + return true; + } + return false; }; const fizzBuzz = (num) => { - // if num is divisible by 3 return 'fizz' - // if num is divisible by 5 return 'buzz' - // if num is divisible by 3 & 5 return 'fizzbuzz' - // otherwise return num + if (num % 5 === 0 && num % 3 === 0) { + return 'fizzbuzz'; + } else if (num % 5 === 0) { + return 'buzz'; + } else if (num % 3 === 0) { + return 'fizz'; + } + return num; }; const isPrime = (num) => { - // return true if num is prime. - // otherwise return false - // hint: a prime number is only evenly divisible by itself and 1 - // hint2: you can solve this using a for loop - // note: 0 and 1 are NOT considered prime numbers + if (num < 0) { + return false; + } + if (num === 1 || num === 0) { + return false; + } + for (let i = 2; i < num; i++) { + if (num % i === 0) { + return false; + } + } + return true; }; const returnFirst = (arr) => { - // return the first item from the array + return arr[0]; }; const returnLast = (arr) => { - // return the last item of the array + return arr[arr.length - 1]; }; const getArrayLength = (arr) => { - // return the length of the array + return arr.length; }; const incrementByOne = (arr) => { - // arr is an array of integers - // increase each integer by one - // return the array + for (let i = 0; i < arr.length; i++) { + arr[i]++; + } + return arr; }; const addItemToArray = (arr, item) => { - // add the item to the end of the array - // return the array + arr.push(item); + return arr; }; const addItemToFront = (arr, item) => { - // add the item to the front of the array - // return the array - // hint: use the array method .unshift + arr.unshift(item); + return arr; }; const wordsToSentence = (words) => { - // words is an array of strings - // return a string that is all of the words concatenated together - // spaces need to be between each word - // example: ['Hello', 'world!'] -> 'Hello world!' + let newSentence = ''; + for (let i = 0; i < words.length; i++) { + if (i === 0) { + newSentence += `${words[i]}`; + } else { + newSentence += ` ${words[i]}`; + } + } + return newSentence; }; const contains = (arr, item) => { - // check to see if item is inside of arr - // return true if it is, otherwise return false + let itemCounter = 0; + for (let i = 0; i < arr.length; i++) { + if (arr[i] === item) { + itemCounter++; + } + } + if (itemCounter > 0) { + return true; + } + return false; }; const addNumbers = (numbers) => { - // numbers is an array of integers. - // add all of the integers and return the value + let sumOfNumbers = 0; + for (let i = 0; i < numbers.length; i++) { + sumOfNumbers += numbers[i]; + } + return sumOfNumbers; }; const averageTestScore = (testScores) => { - // testScores is an array. Iterate over testScores and compute the average. - // return the average + let totalSumScores = 0; + let numberOfScore = 0; + for (let i = 0; i < testScores.length; i++) { + totalSumScores += testScores[i]; + numberOfScore++; + } + return totalSumScores / numberOfScore; }; const largestNumber = (numbers) => { - // numbers is an array of integers - // return the largest integer + let biggestInteger = 0; + for (let i = 0; i < numbers.length; i++) { + if (numbers[i] > biggestInteger) { + biggestInteger = numbers[i]; + } + } + return biggestInteger; }; -// Do not modify code below this line. -// -------------------------------- - module.exports = { getBiggest, greeting, diff --git a/src/project-3.js b/src/project-3.js index 7ca1430..6f24890 100644 --- a/src/project-3.js +++ b/src/project-3.js @@ -1,97 +1,95 @@ -// Do not change any of the function names - const makeCat = (name, age) => { - // create a new object with a name property with the value set to the name argument - // add an age property to the object with the value set to the age argument - // add a method called meow that returns the string 'Meow!' - // return the object + const newCat = { + name, + age, + meow() { + return 'Meow!'; + } + }; + return newCat; }; const addProperty = (object, property) => { - // add the property to the object with a value of null - // return the object - // note: the property name is NOT 'property'. The name is the value of the argument called property (a string) + object[property] = null; + return object; }; const invokeMethod = (object, method) => { - // method is a string that contains the name of a method on the object - // invoke this method - // nothing needs to be returned + object[method](); }; const multiplyMysteryNumberByFive = (mysteryNumberObject) => { - // mysteryNumberObject has a property called mysteryNumber - // multiply the mysteryNumber property by 5 and return the product + return mysteryNumberObject.mysteryNumber * 5; }; const deleteProperty = (object, property) => { - // remove the property from the object - // return the object + delete object[property]; + return object; }; const newUser = (name, email, password) => { - // create a new object with properties matching the arguments passed in. - // return the new object + const object = { + name, + email, + password + }; + return object; }; const hasEmail = (user) => { - // return true if the user has a value for the property 'email' - // otherwise return false + if (user.email) { + return true; + } + return false; }; const hasProperty = (object, property) => { - // return true if the object has the value of the property argument - // property is a string - // otherwise return false + if (object[property]) { + return true; + } + return false; }; const verifyPassword = (user, password) => { - // check to see if the provided password matches the password property on the user object - // return true if they match - // otherwise return false + if (user.password === password) { + return true; + } + return false; }; const updatePassword = (user, newPassword) => { - // replace the existing password on the user object with the value of newPassword - // return the object + user.password = newPassword; + return user; }; const addFriend = (user, newFriend) => { - // user has a property called friends that is an array - // add newFriend to the end of the friends array - // return the user object + user.friends.push(newFriend); + return user; }; const setUsersToPremium = (users) => { - // users is an array of user objects. - // each user object has the property 'isPremium' - // set each user's isPremium property to true - // return the users array + for (let i = 0; i < users.length; i++) { + users[i].isPremium = true; + } + return users; }; const sumUserPostLikes = (user) => { - // user has an array property called 'posts' - // posts is an array of post objects - // each post object has an integer property called 'likes' - // sum together the likes from all the post objects - // return the sum + let sumOfLikes = 0; + for (let i = 0; i < user.posts.length; i++) { + sumOfLikes += user.posts[i].likes; + } + return sumOfLikes; }; const addCalculateDiscountPriceMethod = (storeItem) => { - // Add a method to the storeItem object called 'calculateDiscountPrice' - // This method should multiply the storeItem's 'price' and 'discountPercentage' to get the discount - // The method then subtracts the discount from the price and returns the discounted price - // example: - // price -> 20 - // discountPercentage -> .2 - // discountPrice = 20 - (20 * .2) - // Make sure you return storeItem after adding the method to it - // hint: arrow functions don't bind a this + storeItem.calculateDiscountPrice = () => { + const discount = this.price * this.discountPercentage; + return this.price - discount; + }; + return storeItem; }; -// Do not modify code below this line. -// -------------------------------- - module.exports = { makeCat, addProperty, diff --git a/src/project-4.js b/src/project-4.js index 18e1cac..0647ec1 100644 --- a/src/project-4.js +++ b/src/project-4.js @@ -1,31 +1,37 @@ const getFirstItem = (collection, cb) => { - // invoke the callback function and pass the first item from the collection in as an argument + cb(collection[0]); }; const getLength = (collection, cb) => { - // Write a function called getLength that passes the length of the array into the callback + cb(collection.length); }; const getLastItem = (collection, cb) => { - // Write a function called getLastItem which passes the getLastItem item of the array into the callback + cb(collection[collection.length - 1]); }; const sumNums = (x, y, cb) => { - // Write a function called sumNums that adds two numbers and passes the result to the callback + const numSummed = x + y; + cb(numSummed); }; const multiplyNums = (x, y, cb) => { - // Write a function called multiplyNums that adds two numbers and passes the result to the callback + const numProduct = x * y; + cb(numProduct); }; const contains = (collection, item, cb) => { - // Write a function called contains that checks if an item is present inside of the given array. - // Pass true to the callback if it is, otherwise pass false + cb(collection.includes(item)); }; const removeDuplicates = (collection, cb) => { - // Write a function called removeDuplicates that removes all duplicate values from the given array. - // Pass the array to the callback function. Do not mutate the original array. + const itemsChecked = []; + collection.forEach((item, index) => { + if (itemsChecked.indexOf(item) === -1) { + itemsChecked.push(item); + } + }); + cb(itemsChecked); }; module.exports = { From 6379af330481530798f6ae5d3c93e988fa164aaf Mon Sep 17 00:00:00 2001 From: Sean Chen Date: Wed, 9 Aug 2017 13:44:38 -0700 Subject: [PATCH 2/2] Fix a broken test --- src/project-3.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/project-3.js b/src/project-3.js index 6f24890..a305dc6 100644 --- a/src/project-3.js +++ b/src/project-3.js @@ -84,8 +84,8 @@ const sumUserPostLikes = (user) => { const addCalculateDiscountPriceMethod = (storeItem) => { storeItem.calculateDiscountPrice = () => { - const discount = this.price * this.discountPercentage; - return this.price - discount; + const discount = storeItem.price * storeItem.discountPercentage; + return storeItem.price - discount; }; return storeItem; };