From ad1026b590077f4691791546ebb8e8935988a461 Mon Sep 17 00:00:00 2001 From: Brandon Mahabir Date: Sun, 23 Oct 2022 13:03:47 -0400 Subject: [PATCH] Finished --- src/01-functions.js | 42 +++- src/02-data-types.js | 53 ++++- src/03-control-flow.js | 84 +++++++- src/04-arrays.js | 42 +++- src/05-objects.js | 44 +++- src/06-loops.js | 411 ++++++++++++++++++++++---------------- src/07-even-more-loops.js | 78 +++++++- src/08-accessing.js | 62 +++++- src/09-word-problems.js | 90 ++++++++- 9 files changed, 662 insertions(+), 244 deletions(-) diff --git a/src/01-functions.js b/src/01-functions.js index 8d772b6a..7755f5ba 100644 --- a/src/01-functions.js +++ b/src/01-functions.js @@ -9,7 +9,9 @@ * alwaysTrue(); * //> true */ -function alwaysTrue() {} + function alwaysTrue() { + return true +} /** * greet() @@ -24,7 +26,9 @@ function alwaysTrue() {} * greet("Ian"); * //> "Hello, Ian." */ -function greet() {} +function greet(name) { + return `Hello, ${name}.` +} /** * add() @@ -39,7 +43,9 @@ function greet() {} * add(10, 20); * //> 30 */ -function add() {} +function add(a, b) { + return a + b +} /** * multiply() @@ -54,7 +60,9 @@ function add() {} * multiply(2, 5); * //> 10 */ -function multiply() {} +function multiply(a, b) { + return a * b +} /** * average() @@ -74,7 +82,9 @@ function multiply() {} * average(10, 6); * //> 8 // 10 + 6 = 16; 16/2 = 8; */ -function average() {} +function average(a, b) { + return (a + b) / 2 +} /** * averageThree() @@ -93,7 +103,9 @@ function average() {} * averageThree(10, 11, 19); * //> 10 // 10 + 11 + 19 = 30; 30 / 3 = 10; */ -function averageThree() {} +function averageThree(a, b, c) { + return (a+b+c)/3 +} /** * compareTypes() @@ -112,7 +124,11 @@ function averageThree() {} * compareTypes("left", 10); * //> false */ -function compareTypes() {} +function compareTypes(a, b) { + if (typeof(a) === typeof(b)){ + return true + } else return false +} /** * flipSign() @@ -131,7 +147,9 @@ function compareTypes() {} * flipSign(50); * //> -50 */ -function flipSign() {} +function flipSign(a) { + return -1 * a +} /** * joinStringsWithSpaces() @@ -151,7 +169,9 @@ function flipSign() {} * joinStringsWithSpaces("left", "right", "up", "down", "away"); * //> "left right up down away" */ -function joinStringsWithSpaces() {} +function joinStringsWithSpaces(a,b,c,d,e) { + return `${a} ${b} ${c} ${d} ${e}` +} /** * getFirstAndLastCharacter() @@ -168,7 +188,9 @@ function joinStringsWithSpaces() {} * getFirstAndLastCharacter("upwards"); * //> "us" */ -function getFirstAndLastCharacter() {} +function getFirstAndLastCharacter(a) { + return `${a[0]}${a[a.length -1]}` +} // Do not change the code below. module.exports = { diff --git a/src/02-data-types.js b/src/02-data-types.js index 79cf96cf..4f96e513 100644 --- a/src/02-data-types.js +++ b/src/02-data-types.js @@ -9,7 +9,9 @@ * getLengthOfString("down"); * //> 4 */ -function getLengthOfString(str) {} + function getLengthOfString(str) { + return str.length +} /** * convertToNumber() @@ -22,7 +24,9 @@ function getLengthOfString(str) {} * convertToNumber("111"); * //> 111 */ -function convertToNumber(val) {} +function convertToNumber(val) { + return Number(val) +} /** * convertToString() @@ -36,7 +40,9 @@ function convertToNumber(val) {} * convertToString(99); * //> "99" */ -function convertToString(val) {} +function convertToString(val) { +return String(val) +} /** * convertToShoutingText() @@ -49,7 +55,9 @@ function convertToString(val) {} * convertToShoutingText("Hello There"); * //> "HELLO THERE" */ -function convertToShoutingText(text) {} +function convertToShoutingText(text) { + return text.toUpperCase() +} /** * convertToWhisperText() @@ -62,7 +70,9 @@ function convertToShoutingText(text) {} * convertToWhisperText("Hello There"); * //> "hello there" */ -function convertToWhisperText(text) {} +function convertToWhisperText(text) { + return text.toLowerCase() +} /** * checkIfCharacterIsInString() @@ -79,7 +89,14 @@ function convertToWhisperText(text) {} * checkIfCharacterIsInString("hello there", "a"); * //> false */ -function checkIfCharacterIsInString(text, character) {} +function checkIfCharacterIsInString(text, character) { + // for (let i = 0; i < text.length; i++){ + // if (text[i] === character){ + // return true + // } else return false + // } + return text.includes(character) +} /** * isEven() @@ -95,7 +112,11 @@ function checkIfCharacterIsInString(text, character) {} * isEven(11); * //> false */ -function isEven(num) {} +function isEven(num) { + if (num % 2 === 0){ + return true + } else return false +} /** * isOdd() @@ -111,7 +132,11 @@ function isEven(num) {} * isOdd(11); * //> true */ -function isOdd(num) {} +function isOdd(num) { + if (num % 2 === 1){ + return true + } else return false +} /** * isTruthy() @@ -127,7 +152,11 @@ function isOdd(num) {} * isTruthy(null); * //> false */ -function isTruthy(val) {} +function isTruthy(val) { + if (val && val){ + return true + } else return false +} /** * isFalsy() @@ -143,7 +172,11 @@ function isTruthy(val) {} * isFalsy(" "); * //> false */ -function isFalsy(val) {} +function isFalsy(val) { + if (val && val){ + return false + } else return true +} // Do not change the code below. module.exports = { diff --git a/src/03-control-flow.js b/src/03-control-flow.js index 8f675935..2392ebeb 100644 --- a/src/03-control-flow.js +++ b/src/03-control-flow.js @@ -14,7 +14,11 @@ * isEqual(10, "10"); * //> false */ -function isEqual(a, b) {} + function isEqual(a, b) { + if (a === b){ + return true + } else return false +} /** * findLarger() @@ -28,7 +32,11 @@ function isEqual(a, b) {} * findLarger(19, 7); * //> 19 */ -function findLarger(a, b) {} +function findLarger(a, b) { + if (a > b){ + return a + } else return b +} /** * findLargerOrTie() @@ -45,7 +53,13 @@ function findLarger(a, b) {} * findLargerOrTie(0, 0); * //> "tie" */ -function findLargerOrTie(a, b) {} +function findLargerOrTie(a, b) { + if (a > b){ + return a + } else if (a === b){ + return "tie" + } else return b +} /** * positiveNegativeOrZero() @@ -65,7 +79,15 @@ function findLargerOrTie(a, b) {} * positiveNegativeOrZero(1); * //> "Positive" */ -function positiveNegativeOrZero(a) {} +function positiveNegativeOrZero(a) { + if (Math.sign(a) === 1){ + return 'Positive' + } else if (Math.sign(a) === -1){ + return 'Negative' + } else if (a === 0){ + return 'Zero' + } +} /** * aroundTheWorldGreeting() @@ -86,7 +108,15 @@ function positiveNegativeOrZero(a) {} * aroundTheWorldGreeting(); * //> "Hello World" */ -function aroundTheWorldGreeting(language) {} +function aroundTheWorldGreeting(language) { + if (language === 'english'){ + return "Hello World" + } else if (language === 'spanish'){ + return "Hola Mundo" + } else if (language === 'german'){ + return "Hallo Welt" + } else return "Hello World" +} /** * aroundTheWorldGreetingWithSwitch() @@ -109,7 +139,21 @@ function aroundTheWorldGreeting(language) {} * aroundTheWorldGreetingWithSwitch(); * //> "Hello World" */ -function aroundTheWorldGreetingWithSwitch(language) {} +function aroundTheWorldGreetingWithSwitch(language) { + let myDefault = "Hello World" + + switch (language){ + case "english": + myDefault = "Hello World"; + break; + case "spanish": + myDefault = "Hola Mundo"; + break; + case "german": + myDefault = "Hallo Welt"; + break; + } return myDefault +} /** * calculateLetterGrade() @@ -128,7 +172,17 @@ function aroundTheWorldGreetingWithSwitch(language) {} * calculateLetterGrade(99); * //> "A" */ -function calculateLetterGrade(grade) {} +function calculateLetterGrade(grade) { + if (grade >= 90){ + return "A" + } else if (grade >= 80){ + return "B" + } else if (grade >= 70){ + return "C" + } else if (grade >= 60){ + return "D" + } else return "F" +} /** * animalCounts() @@ -146,7 +200,11 @@ function calculateLetterGrade(grade) {} * animalCounts("pig", 1); * //> "1 pig" */ -function animalCounts(animal, numberOfAnimals) {} +function animalCounts(animal, numberOfAnimals) { + if (numberOfAnimals > 1){ + return `${numberOfAnimals} ${animal}s` + } else return `${numberOfAnimals} ${animal}` +} /** * evenOrOdd() @@ -163,7 +221,11 @@ function animalCounts(animal, numberOfAnimals) {} * evenOrOdd(48); * //> "Even" */ -function evenOrOdd(a) {} +function evenOrOdd(a) { + if (a % 2 === 0){ + return `Even` + } else return "Odd" +} /** * evenOrOddWithTernary() @@ -179,7 +241,9 @@ function evenOrOdd(a) {} * evenOrOddWithTernary(8); * //> "Even" */ -function evenOrOddWithTernary(a) {} +function evenOrOddWithTernary(a) { +return a % 2 === 0 ? "Even" : "Odd" +} // Do not change any code below this line. module.exports = { diff --git a/src/04-arrays.js b/src/04-arrays.js index 5317f7c3..ecf9b01a 100644 --- a/src/04-arrays.js +++ b/src/04-arrays.js @@ -10,7 +10,9 @@ * createEmptyArray(); * //> [] */ -function createEmptyArray() {} + function createEmptyArray() { + return [ ] +} /** * createArrayWithTwoElements() @@ -24,7 +26,9 @@ function createEmptyArray() {} * createArrayWithTwoElements(true, false); * //> [ true, false ] */ -function createArrayWithTwoElements(a, b) {} +function createArrayWithTwoElements(a, b) { + return [a,b] +} /** * getArrayLength() @@ -37,7 +41,9 @@ function createArrayWithTwoElements(a, b) {} * getArrayLength([ 10, 20, 30 ]); * //> 3 */ -function getArrayLength(array) {} +function getArrayLength(array) { + return array.length +} /** * getFirstElementOfArray() @@ -51,7 +57,9 @@ function getArrayLength(array) {} * getFirstElementOfArray([ 10, 20, 30 ]); * //> 10 */ -function getFirstElementOfArray(array) {} +function getFirstElementOfArray(array) { + return array[0] +} /** * getLastElementOfArray() @@ -65,7 +73,9 @@ function getFirstElementOfArray(array) {} * getLastElementOfArray([ null, undefined ]); * //> undefined */ -function getLastElementOfArray(array) {} +function getLastElementOfArray(array) { + return array[array.length -1] +} /** * addElementToEndOfArray() @@ -79,7 +89,10 @@ function getLastElementOfArray(array) {} * addElementToEndOfArray([ 10 ], 9); * //> [ 10, 9 ] */ -function addElementToEndOfArray(array, element) {} +function addElementToEndOfArray(array, element) { + array.push(element) + return array +} /** * removeElementFromEndOfArray() @@ -92,7 +105,9 @@ function addElementToEndOfArray(array, element) {} * removeElementFromEndOfArray([ 10, 9, 8 ]); * //> 8 */ -function removeElementFromEndOfArray(array) {} +function removeElementFromEndOfArray(array) { + return array.pop() +} /** * addElementToFrontOfArray() @@ -106,7 +121,10 @@ function removeElementFromEndOfArray(array) {} * addElementToFrontOfArray([ 10 ], 9); * //> [ 9, 10 ] */ -function addElementToFrontOfArray(array, element) {} +function addElementToFrontOfArray(array, element) { + array.unshift(element); + return array +} /** * removeElementFromFrontOfArray() @@ -119,7 +137,9 @@ function addElementToFrontOfArray(array, element) {} * removeElementFromFrontOfArray([ 10, 9, 8 ]); * //> 10 */ -function removeElementFromFrontOfArray(array) {} +function removeElementFromFrontOfArray(array) { + return array.shift() +} /** * getMiddleElement() @@ -135,7 +155,9 @@ function removeElementFromFrontOfArray(array) {} * getMiddleElement([ 10, null, "30" ]); * //> null */ -function getMiddleElement(array) {} +function getMiddleElement(array) { + return array[(Math.floor(array.length/2))] +} // Do not change any code below this line. module.exports = { diff --git a/src/05-objects.js b/src/05-objects.js index 3e97313c..67efa984 100644 --- a/src/05-objects.js +++ b/src/05-objects.js @@ -9,7 +9,9 @@ * createEmptyObject() * //> {} */ -function createEmptyObject() {} + function createEmptyObject() { + return { } +} /** * createObjectWithValue() @@ -22,7 +24,9 @@ function createEmptyObject() {} * createObjectWithValue(19); * //> { whateverKey: 19 } */ -function createObjectWithValue(val) {} +function createObjectWithValue(val) { + return {any:val} +} /** * createObjectWithKey() @@ -35,7 +39,9 @@ function createObjectWithValue(val) {} * createObjectWithKey("left"); * //> { left: false } */ -function createObjectWithKey(key) {} +function createObjectWithKey(key) { + return {[key]:true} +} /** * createObjectWithKeyValuePair() @@ -49,7 +55,9 @@ function createObjectWithKey(key) {} * createObjectWithKeyValuePair("left", "right"); * //> { left: "right" } */ -function createObjectWithKeyValuePair(key, val) {} +function createObjectWithKeyValuePair(key, val) { + return {[key]:val} +} /** * getNameFromObject() @@ -62,7 +70,9 @@ function createObjectWithKeyValuePair(key, val) {} * getNameFromObject({ name: "Jay" }); * //> "Jay" */ -function getNameFromObject(object) {} +function getNameFromObject(object) { + return object.name +} /** * getAgeFromObject() @@ -75,7 +85,9 @@ function getNameFromObject(object) {} * getAgeFromObject({ age: 30 }); * //> 30 */ -function getAgeFromObject(object) {} +function getAgeFromObject(object) { + return object.age +} /** * addValueToObject() @@ -89,7 +101,10 @@ function getAgeFromObject(object) {} * addValueToObject({ left: true }, false); * //> { left: true, key: false } */ -function addValueToObject(object, val) {} +function addValueToObject(object, val) { + object['newValue'] = val + return object +} /** * addKeyToObject() @@ -103,7 +118,10 @@ function addValueToObject(object, val) {} * addKeyToObject({ right: false }, "left"); * //> { right: false, left: true } */ -function addKeyToObject(object, key) {} +function addKeyToObject(object, key) { + object[key] = true + return object +} /** * addKeyValuePairToObject() @@ -118,7 +136,10 @@ function addKeyToObject(object, key) {} * addKeyValuePairToObject({ up: true }, "left", false); * //> { up: true, left: false } */ -function addKeyValuePairToObject(object, key, val) {} +function addKeyValuePairToObject(object, key, val) { + object[key] = val + return object +} /** * deleteKeyFromObject() @@ -132,7 +153,10 @@ function addKeyValuePairToObject(object, key, val) {} * deleteKeyFromObject({ left: true, right: false }, "left"); * //> { right: false } */ -function deleteKeyFromObject(object, key) {} +function deleteKeyFromObject(object, key) { + delete object[key] + return object +} // Do not change any code below this line. module.exports = { diff --git a/src/06-loops.js b/src/06-loops.js index 1116cc27..97a1492b 100644 --- a/src/06-loops.js +++ b/src/06-loops.js @@ -11,172 +11,245 @@ * //> 25 * (3 + 4 + 5 + 6 + 7 = 25) */ -function rangeSum(min, max) {} - -/** - * rangeOdd() - * --------------------- - * Takes in range (inclusive) and returns an array in decreasing order of only the odd numbers in that range. - * @param {number} min - * @param {number} max - * @returns {number[]} - * - * EXAMPLE: - * rangeOdd(10, 15); - * //> [ 15, 13, 11 ] - */ -function rangeOdd(min, max) {} - -/** - * rangeEveryOther() - * --------------------- - * Takes in range (inclusive) and returns an array in increasing order of only every other element. Start by including the first number. - * @param {number} min - * @param {number} max - * @returns {number[]} - * - * EXAMPLE: - * rangeEveryOther(11, 18); - * //> [ 11, 13, 15, 17 ] - */ -function rangeEveryOther(min, max) {} - -/** - * containsWhileLoop() - * --------------------- - * Returns whether or not the `target` value exists in the array. - * - * NOTE: Must be written with a `while` loop. - * - * NOTE: Must NOT contain the `.includes()` method. - * - * @param {*[]} array - * @param {number|string} target - * @returns {boolean} - * - * EXAMPLE: - * containsWhileLoop([ 5, 2, 4 ], 4); - * //> true - * - * containsWhileLoop([ "left", "up", "right" ], "down"); - * //> false - */ -function containsWhileLoop(array, target) {} - -/** - * containsForLoop() - * --------------------- - * Returns whether or not the `target` value exists in the array. - * - * NOTE: Must be written with a `for` loop. - * - * NOTE: Must NOT contain the `.includes()` method. - * - * @param {*[]} array - * @param {number|string} target - * @returns {boolean} - * - * EXAMPLE: - * containsForLoop([ 5, 2, 4 ], 4); - * //> true - * - * containsForLoop([ "left", "up", "right" ], "down"); - * //> false - */ -function containsForLoop(array, target) {} - -/** - * targetCount() - * --------------------- - * Returns how many times the `target` occurs in the array. - * @param {*[]} array - * @param {number|string} target - * @returns {number} - * - * EXAMPLE: - * targetCount([ 10, 20, 10, 20, 30 ], 10); - * //> 2 - */ -function targetCount(array, target) {} - -/** - * firstIndexFound() - * --------------------- - * Returns the first index that the `target` is found at in the array. If the `target` is not found, it should return `-1`. - * - * NOTE: You may NOT use the `.indexOf()` method. - * - * @param {*[]} array - * @param {number|string} target - * @returns {number} - * - * EXAMPLE: - * firstIndexFound([ "left", "right", "left" ], "left"); - * //> 0 - * - * firstIndexFound([ "left", "right", "left" ], "up"); - * //> -1 - */ -function firstIndexFound(array, target) {} - -/** - * lastIndexFound() - * --------------------- - * Returns the last index that the `target` is found at in the array. If the `target` is not found, it should return `-1`. - * - * NOTE: You may NOT use the `.indexOf()` method. - * - * @param {*[]} array - * @param {number|string} target - * @returns {number} - * - * EXAMPLE: - * lastIndexFound([ "left", "right", "left" ], "left"); - * //> 2 - * - * lastIndexFound([ "left", "right", "left" ], "up"); - * //> -1 - */ -function lastIndexFound(array, target) {} - -/** - * timesIndex() - * --------------------- - * Returns a new array where each element has been multiplied by its index. - * @param {number[]} elements - * @returns {number[]} - * - * EXAMPLE: - * timesIndex([ 7, 10, 11 ]); - * //> [ 7 * 0, 10 * 1, 11 * 2 ] - * //> [ 0, 10, 22 ] - */ -function timesIndex(array) {} - -/** - * cumulativeSum() - * --------------------- - * Returns a new array where each element is the cumulative sum in the array, up until that point. - * @param {number[]} array - * @returns {number[]} - * - * EXAMPLE: - * cumulativeSum([ 5, 2, 9 ]); - * //> [ 5, 5 + 2, 5 + 2 + 9 ] - * //> [ 5, 7, 16 ] - */ -function cumulativeSum(array) {} - -// Do not change anything below this line. -module.exports = { - rangeSum, - rangeOdd, - rangeEveryOther, - containsWhileLoop, - containsForLoop, - targetCount, - firstIndexFound, - lastIndexFound, - timesIndex, - cumulativeSum, -}; + function rangeSum(min, max) { + let addedSum = 0 + for (let i = min; i <= max; i++){ + addedSum = i + addedSum + } return addedSum + } + + /** + * rangeOdd() + * --------------------- + * Takes in range (inclusive) and returns an array in decreasing order of only the odd numbers in that range. + * @param {number} min + * @param {number} max + * @returns {number[]} + * + * EXAMPLE: + * rangeOdd(10, 15); + * //> [ 15, 13, 11 ] + */ + function rangeOdd(min, max) { + let newArray = [] + for (let i = max; i >= min; i --){ + if (i % 2 === 1){ + newArray.push(i) + } + } return newArray + } + + /** + * rangeEveryOther() + * --------------------- + * Takes in range (inclusive) and returns an array in increasing order of only every other element. Start by including the first number. + * @param {number} min + * @param {number} max + * @returns {number[]} + * + * EXAMPLE: + * rangeEveryOther(11, 18); + * //> [ 11, 13, 15, 17 ] + */ + function rangeEveryOther(min, max) { + let wastedNumber = [ ] + let startArray = [ ] + + for (let i = min; i <= max; i ++){ + if (i === min){ + startArray.push(i) + } else if (startArray.length != wastedNumber.length){ + wastedNumber.push(i) + } else startArray.push(i) + } return startArray + } + + /** + * containsWhileLoop() + * --------------------- + * Returns whether or not the `target` value exists in the array. + * + * NOTE: Must be written with a `while` loop. + * + * NOTE: Must NOT contain the `.includes()` method. + * + * @param {*[]} array + * @param {number|string} target + * @returns {boolean} + * + * EXAMPLE: + * containsWhileLoop([ 5, 2, 4 ], 4); + * //> true + * + * containsWhileLoop([ "left", "up", "right" ], "down"); + * //> false + */ + function containsWhileLoop(array, target) { + let i = 0 + while (i < array.length){ + if (array[i] === target){ + return true + } else i++ + } return false + } + + /** + * containsForLoop() + * --------------------- + * Returns whether or not the `target` value exists in the array. + * + * NOTE: Must be written with a `for` loop. + * + * NOTE: Must NOT contain the `.includes()` method. + * + * @param {*[]} array + * @param {number|string} target + * @returns {boolean} + * + * EXAMPLE: + * containsForLoop([ 5, 2, 4 ], 4); + * //> true + * + * containsForLoop([ "left", "up", "right" ], "down"); + * //> false + */ + function containsForLoop(array, target) { + for (let i = 0; i < array.length; i++){ + if (array[i] === target){ + return true + } + } return false + } + + /** + * targetCount() + * --------------------- + * Returns how many times the `target` occurs in the array. + * @param {*[]} array + * @param {number|string} target + * @returns {number} + * + * EXAMPLE: + * targetCount([ 10, 20, 10, 20, 30 ], 10); + * //> 2 + */ + function targetCount(array, target) { + let targetCounts = 0 + for (let i = 0; i < array.length; i++){ + if (array[i] === target){ + targetCounts ++ + } + }return targetCounts + } + + /** + * firstIndexFound() + * --------------------- + * Returns the first index that the `target` is found at in the array. If the `target` is not found, it should return `-1`. + * + * NOTE: You may NOT use the `.indexOf()` method. + * + * @param {*[]} array + * @param {number|string} target + * @returns {number} + * + * EXAMPLE: + * firstIndexFound([ "left", "right", "left" ], "left"); + * //> 0 + * + * firstIndexFound([ "left", "right", "left" ], "up"); + * //> -1 + */ + function firstIndexFound(array, target) { + firstIndex = 0 + for (let i = 0; i < array.length; i++){ + if (array[i] === target){ + firstIndex = i + return firstIndex + } + } return -1 + } + + /** + * lastIndexFound() + * --------------------- + * Returns the last index that the `target` is found at in the array. If the `target` is not found, it should return `-1`. + * + * NOTE: You may NOT use the `.indexOf()` method. + * + * @param {*[]} array + * @param {number|string} target + * @returns {number} + * + * EXAMPLE: + * lastIndexFound([ "left", "right", "left" ], "left"); + * //> 2 + * + * lastIndexFound([ "left", "right", "left" ], "up"); + * //> -1 + */ + function lastIndexFound(array, target) { + let lastIndex = 0 + for (let i = array.length; i > 0; i--){ + if (array[i] === target){ + lastIndex = i + return lastIndex + } + } return -1 + } + + /** + * timesIndex() + * --------------------- + * Returns a new array where each element has been multiplied by its index. + * @param {number[]} elements + * @returns {number[]} + * + * EXAMPLE: + * timesIndex([ 7, 10, 11 ]); + * //> [ 7 * 0, 10 * 1, 11 * 2 ] + * //> [ 0, 10, 22 ] + */ + function timesIndex(array) { + multipliedIndexArr = [] + for (let i = 0; i < array.length; i++){ + multipliedIndexArr.push(array[i] * i) + } return multipliedIndexArr + } + + /** + * cumulativeSum() + * --------------------- + * Returns a new array where each element is the cumulative sum in the array, up until that point. + * @param {number[]} array + * @returns {number[]} + * + * EXAMPLE: + * cumulativeSum([ 5, 2, 9 ]); + * //> [ 5, 5 + 2, 5 + 2 + 9 ] + * //> [ 5, 7, 16 ] + */ + function cumulativeSum(array) { + newArr = [] + newNum = 0 + for (let i = 0; i < array.length; i++){ + newNum += array[i] + newArr.push(newNum) + } + return newArr + } + + // Do not change anything below this line. + module.exports = { + rangeSum, + rangeOdd, + rangeEveryOther, + containsWhileLoop, + containsForLoop, + targetCount, + firstIndexFound, + lastIndexFound, + timesIndex, + cumulativeSum, + }; + \ No newline at end of file diff --git a/src/07-even-more-loops.js b/src/07-even-more-loops.js index 250fde4a..f81532d4 100644 --- a/src/07-even-more-loops.js +++ b/src/07-even-more-loops.js @@ -12,7 +12,11 @@ * shoutForLoop([ "A", "Very", "Happy", "Array" ]); * //> [ "A!", "Very!", "Happy!", "Array!" ]; */ -function shoutForLoop(array) {} + function shoutForLoop(array) { + for (let i = 0; i < array.length; i++){ + array[i] += "!" + } return array +} /** * shoutWhileLoop() @@ -28,7 +32,13 @@ function shoutForLoop(array) {} * shoutWhileLoop([ "A", "Very", "Happy", "Array" ]); * //> [ "A!", "Very!", "Happy!", "Array!" ]; */ -function shoutWhileLoop(array) {} +function shoutWhileLoop(array) { + let i = 0 + while(i < array.length){ + array[i] += "!" + i++ + } return array +} /** * shoutForOfLoop() @@ -44,7 +54,13 @@ function shoutWhileLoop(array) {} * shoutForOfLoop([ "A", "Very", "Happy", "Array" ]); * //> [ "A!", "Very!", "Happy!", "Array!" ]; */ -function shoutForOfLoop(array) {} +function shoutForOfLoop(array) { +let newArr = [] +for (let value of array) { + value += "!"; + newArr.push(value) +} return newArr +} /** * sumArray() @@ -57,7 +73,12 @@ function shoutForOfLoop(array) {} * sumArray([ 10, 0, 10, 11 ]); * //> 31 */ -function sumArray(array) {} +function sumArray(array) { + let total = 0 + for (let i = 0; i < array.length; i++){ + total += array[i] + } return total +} /** * oddArray() @@ -70,7 +91,14 @@ function sumArray(array) {} * oddArray([ 11, 15, 20, 22, 37 ]); * //> [ 11, 15, 37 ] */ -function oddArray(array) {} +function oddArray(array) { + let oddArr = [] + for (let i = 0; i < array.length; i++){ + if (array[i] % 2 === 1){ + oddArr.push(array[i]) + } + } return oddArr +} /** * evenArray() @@ -83,7 +111,14 @@ function oddArray(array) {} * evenArray([ 11, 15, 20, 22, 37 ]); * //> [ 20, 22 ] */ -function evenArray(array) {} +function evenArray(array) { + let evenArr = [] + for (let i = 0; i < array.length; i++){ + if (array[i] % 2 === 0){ + evenArr.push(array[i]) + } + } return evenArr +} /** * findSmallest() @@ -96,7 +131,14 @@ function evenArray(array) {} * findSmallest([ 0, 11, -2, 5 ]); * //> -2 */ -function findSmallest(array) {} +function findSmallest(array) { + let smallest = array[0] + for (let i = 0; i < array.length; i++){ + if (array[i] < smallest){ + smallest = array[i] + } + } return smallest +} /** * findLargest() @@ -109,7 +151,14 @@ function findSmallest(array) {} * findLargest([ 0, 11, -2, 5 ]); * //> 11 */ -function findLargest(array) {} +function findLargest(array) { + largest = array[0] + for (let i = 0; i < array.length; i++){ + if (array[i] > largest){ + largest = array[i] + } + } return largest +} /** * findEqual() @@ -126,7 +175,9 @@ function findLargest(array) {} * findEqual([ 0, 11, -2, 5 ], 9); * //> false */ -function findEqual(array, selected) {} +function findEqual(array, selected) { + return array.includes(selected) +} /** * removeDuplicates() @@ -143,7 +194,14 @@ function findEqual(array, selected) {} * //> [ 1, 11, 2, 3, 4, 9 ] */ -function removeDuplicates(array) {} +function removeDuplicates(array) { + let newArr = [] + for (let i = 0; i < array.length; i++){ + if (!newArr.includes(array[i])){ + newArr.push(array[i]) + } + } return newArr +} // Do not change any code below this line. module.exports = { diff --git a/src/08-accessing.js b/src/08-accessing.js index 079908aa..0570a100 100644 --- a/src/08-accessing.js +++ b/src/08-accessing.js @@ -32,7 +32,9 @@ * getFirstName(person); * //> "Rachel" */ -function getFirstName(person) {} + function getFirstName(person) { + return person.names.first +} /** * getLastName() @@ -45,7 +47,9 @@ function getFirstName(person) {} * getLastName(person); * //> "Rojas" */ -function getLastName(person) {} +function getLastName(person) { + return person.names.last +} /** * getAddressStreet() @@ -58,7 +62,9 @@ function getLastName(person) {} * getAddressStreet(person); * //> "697 Pine Drive" */ -function getAddressStreet(person) {} +function getAddressStreet(person) { + return person.address.street +} /** * getCountOfPhoneNumbers() @@ -71,7 +77,9 @@ function getAddressStreet(person) {} * getCountOfPhoneNumbers(person); * //> 2 */ -function getCountOfPhoneNumbers(person) {} +function getCountOfPhoneNumbers(person) { + return person.numbers.length +} /** * getFirstPhoneNumber() @@ -87,7 +95,9 @@ function getCountOfPhoneNumbers(person) {} * getFirstPhoneNumber(person); * //> 7185550921 */ -function getFirstPhoneNumber(person) {} +function getFirstPhoneNumber(person) { + return person.numbers[0] +} /** * getLastPhoneNumber() @@ -103,7 +113,9 @@ function getFirstPhoneNumber(person) {} * getLastPhoneNumber(person); * //> 7185558611 */ -function getLastPhoneNumber(person) {} +function getLastPhoneNumber(person) { + return person.numbers[person.numbers.length -1] +} /** * getFullName() @@ -116,7 +128,9 @@ function getLastPhoneNumber(person) {} * getFullName(person); * //> "Rachel Eleanor Rojas" */ -function getFullName(person) {} +function getFullName(person) { + return `${person.names.first} ${person.names.middle} ${person.names.last}` +} /** * getCityAndState() @@ -132,7 +146,9 @@ function getFullName(person) {} * getCityAndState(person); * //> "Staten Island, NY" */ -function getCityAndState(person) {} +function getCityAndState(person) { + return `${person.address.city}, ${person.address.state}` +} /** * getFullAddress() @@ -148,7 +164,9 @@ function getCityAndState(person) {} * getFullAddress(person); * //> "697 Pine Drive 2A, Staten Island, NY, 10306" */ -function getFullAddress(person) {} +function getFullAddress(person) { + return `${person.address.street} ${person.address.unit}, ${person.address.city}, ${person.address.state}, ${person.address.zip}` +} /** * getFlatObject() @@ -171,7 +189,31 @@ function getFullAddress(person) {} numbers: [7185550921, 7185558611], }; */ -function getFlatObject(person) {} +function getFlatObject(person) { + let first = person.names.first + let middle = person.names.middle + let last = person.names.last + let street = person.address.street + let unit = person.address.unit + let city = person.address.city + let state = person.address.state + let zip = person.address.zip + let numbers = person.numbers + + let newObj = {} + + newObj.first = first + newObj.middle = middle + newObj.last = last + newObj.street = street + newObj.unit = unit + newObj.city = city + newObj.state = state + newObj.zip = zip + newObj.numbers = numbers + + return newObj +} // Do not change the code below. module.exports = { diff --git a/src/09-word-problems.js b/src/09-word-problems.js index 2f63d723..a79fc7d7 100644 --- a/src/09-word-problems.js +++ b/src/09-word-problems.js @@ -19,7 +19,17 @@ * applyDiscount(1000, 9, true); * //> 700 */ -function applyDiscount(priceInCents, age, hasMembership) {} + function applyDiscount(priceInCents, age, hasMembership) { + let ageMembership = (age <= 10 || age >= 65) + + if (hasMembership && (ageMembership)){ + return priceInCents * .70 + } else if (hasMembership){ + return priceInCents * .80 + } else if (ageMembership){ + return priceInCents * .90 + } else return priceInCents +} /** * getCartTotal() @@ -40,7 +50,14 @@ function applyDiscount(priceInCents, age, hasMembership) {} getCartTotal(cart); * //> "$30.00" */ -function getCartTotal(products) {} +function getCartTotal(products) { + let total = 0 + // console.log(products) + for (let i = 0; i < products.length; i ++){ + total += products[i].priceInCents * products[i].quantity + } + return `$${(total/100).toFixed(2)}` +} /** * compareLocations() @@ -80,7 +97,15 @@ function getCartTotal(products) {} compareLocations(address1, address2); //> "Same city." */ -function compareLocations(address1, address2) {} +function compareLocations(address1, address2) { + if ((address1.street === address2.street) && (address1.city === address2.city) && (address1.state === address2.state) && (address1.zip === address2.zip)){ + return "Same building." + } else if ((address1.city === address2.city) && (address1.state === address2.state) && (address1.zip === address2.zip)){ + return "Same city." + } else if (address1.state === address2.state){ + return "Same state." + } else return "Addresses are not near each other." +} /** * gradeAssignments() @@ -127,7 +152,49 @@ function compareLocations(address1, address2) {} //> }, //> ]; */ -function gradeAssignments(assignments) {} +function gradeAssignments(assignments) { + // console.log(assignments) + + for (let i = 0; i < assignments.length; i++){ + if ( assignments[i].kind === 'PASS-FAIL'){ + if (assignments[i].score.received === assignments[i].score.max){ + assignments[i].status = "PASSED" + } else if (assignments[i].score.received !== assignments[i].score.max){ + assignments[i].status = "FAILED" + } + } else if (assignments[i].kind === 'PERCENTAGE'){ + if ((assignments[i].score.received / assignments[i].score.max) >= .80){ + assignments[i].status = `PASSED: ${((assignments[i].score.received / assignments[i].score.max) * 100).toFixed(1)}%` + } else assignments[i].status = `FAILED: ${((assignments[i].score.received / assignments[i].score.max) * 100).toFixed(1)}%` + } else assignments[i].status = `SCORE: ${assignments[i].score.received}/${assignments[i].score.max}` + } + return assignments +} +// let newArray = [obj1, obj2, obj3] +// let obj1 = {} +// let obj2 = {} +// let obj3 = {} +// obj1.kind = +// obj1.score = +// obj1.kind = + +// obj2.kind = +// obj2.kind = +// obj2.kind = + +// obj3.kind = +// obj3.kind = +// obj3.kind = + +// for (let i = 0; i < assignments.length; i++){ +// newAr[i].kind = assignments[i].kind +// } for (let j = 0; j < assignments.length; j++){ +// newArray[j].score = assignments[j].score +// } for (let k = 0; k < assignments.length; k++){ +// newArray[k].status = assignments[k].score +// } +// console.log(newArray) +// return newArray /** * createLineOrder() @@ -152,7 +219,20 @@ function gradeAssignments(assignments) {} createLineOrder(people); //> [ "Ray Anderson", "America Marsh", "Wade Carson", "Patience Patel" ] */ -function createLineOrder(people) {} +function createLineOrder(people) { + memberArr = [ ] + + for (let i = 0; i < people.length; i++){ + if (people[i].hasMembership === true){ + memberArr.push(people[i].name) + } + } + for (let j = 0; j < people.length; j++){ + if (people[j].hasMembership === false){ + memberArr.push(people[j].name) + } + } return memberArr +} module.exports = { applyDiscount,