From 1668abce1c66e6096c28d3a7f51751ddd86940c9 Mon Sep 17 00:00:00 2001 From: Mary Sue Meissner Date: Fri, 12 May 2023 10:13:11 +0400 Subject: [PATCH 1/5] Work on Lab --- README.md | 439 +++++++++++++++++++++--------------- src/functions-and-arrays.js | 130 ++++++++++- 2 files changed, 374 insertions(+), 195 deletions(-) diff --git a/README.md b/README.md index f7b0062b6..772c81a75 100644 --- a/README.md +++ b/README.md @@ -7,22 +7,22 @@

Learning Goals

- This exercise allows you to practice and apply the concepts and techniques taught in class. +This exercise allows you to practice and apply the concepts and techniques taught in class. - Upon completion of this exercise, you will be able to: +Upon completion of this exercise, you will be able to: - - Run predefined tests in Jasmine to verify that the program meets the technical requirements. - - Identify expected code behavior by reading and understanding test results and errors. - - Declare and invoke functions using function declaration, function expression, and arrow function syntax. - - Use the `return` keyword to return a value from a function. - - Pass primitive values as arguments to functions. - - Pass arrays to functions as arguments. - - Access items stored in arrays using the indexes, - - Add, remove and check for items in an array using the index and array methods (`unshift`, `push`, `splice`, `shift`, `pop`, `indexOf`, and `includes`). - - Iterate over arrays using the `for` and `forEach` loops. +- Run predefined tests in Jasmine to verify that the program meets the technical requirements. +- Identify expected code behavior by reading and understanding test results and errors. +- Declare and invoke functions using function declaration, function expression, and arrow function syntax. +- Use the `return` keyword to return a value from a function. +- Pass primitive values as arguments to functions. +- Pass arrays to functions as arguments. +- Access items stored in arrays using the indexes, +- Add, remove and check for items in an array using the index and array methods (`unshift`, `push`, `splice`, `shift`, `pop`, `indexOf`, and `includes`). +- Iterate over arrays using the `for` and `forEach` loops.
-
+
@@ -56,7 +56,7 @@ Automated software testing is the process of programmatically executing an appli Testing should be viewed as a continuous process, not a discrete operation or single activity in the development lifecycle. Designing tests at the beginning of the product lifecycle can mitigate common issues that arise when developing complex code bases. -Having a strong *test suite* can provide you the ease of mind since you will be able to confidently improve upon your work while knowing that your not breaking a previously developed feature. +Having a strong _test suite_ can provide you the ease of mind since you will be able to confidently improve upon your work while knowing that your not breaking a previously developed feature.
### Testing labs @@ -87,23 +87,21 @@ lab-js-functions-and-arrays └── functions-and-arrays.spec.js ``` -We will be working with the `src/functions-and-arrays.js`. You can find all the files in the `jasmine` folder needed to use Jasmine. All these files are already linked with the `SpecRunner.html` file. +We will be working with the `src/functions-and-arrays.js`. You can find all the files in the `jasmine` folder needed to use Jasmine. All these files are already linked with the `SpecRunner.html` file. If you want to check the tests, they are in the `tests/functions-and-arrays.spec.js` file. - #### Run tests Running automated tests with Jasmine is super easy. All you need to do is open the `SpecRunner.html` file in your browser. You will find something similar to this: [![image](https://user-images.githubusercontent.com/23629340/33389609-c2f3965c-d533-11e7-9a03-e0a89314dd98.png)](https://user-images.githubusercontent.com/23629340/33389609-c2f3965c-d533-11e7-9a03-e0a89314dd98.png) - #### Pass the tests -You should write your code on the `src/functions-and-arrays.js` file. While following the instructions for each iteration, you should check every test and ensure it's *passing*, before moving on. +You should write your code on the `src/functions-and-arrays.js` file. While following the instructions for each iteration, you should check every test and ensure it's _passing_, before moving on. -Do not rush. You should take your time to read every iteration carefully and address the *breaking* tests as you progress through the exercise. +Do not rush. You should take your time to read every iteration carefully and address the _breaking_ tests as you progress through the exercise. When coding with tests, it is super important that you carefully read and understand the errors you are getting. This way, you will know what's expected from your code. @@ -130,7 +128,15 @@ Implement the function `findLongestWord` that takes as an argument an array of w You can use the following array to test your solution: ```javascript -const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot']; +const words = [ + "mystery", + "brother", + "aviator", + "crocodile", + "pearl", + "orchard", + "crackpot", +]; ```
@@ -160,7 +166,7 @@ You should implement the function `sum()` in this iteration. The function should You can use the following array to test your solution: ```javascript -const mixedArr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10]; +const mixedArr = [6, 12, "miami", 1, true, "barca", "200", "lisboa", 8, 10]; // should return: 57 ``` @@ -187,6 +193,7 @@ You can use the following array to test your solution: ```javascript const numbers = [2, 6, 9, 10, 7, 4, 1, 9]; ``` +
#### Iteration #4.2: Array of strings @@ -196,7 +203,18 @@ Implement the function named `averageWordLength` that receives as a single argum You can use the following array to test your solution: ```javascript -const words = ['seat', 'correspond', 'linen', 'motif', 'hole', 'smell', 'smart', 'chaos', 'fuel', 'palace']; +const words = [ + "seat", + "correspond", + "linen", + "motif", + "hole", + "smell", + "smart", + "chaos", + "fuel", + "palace", +]; ```
@@ -211,7 +229,7 @@ The non-numerical values should be counted as follows: - Strings: use the string `length` as the numeric value. ```javascript -const mixedArr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10]; +const mixedArr = [6, 12, "miami", 1, true, "barca", "200", "lisboa", 8, 10]; // should return: 5.7 ``` @@ -224,23 +242,21 @@ Take the following array, remove the duplicates, and return a new array. You are Do this in the form of a function `uniquifyArray` that receives an array of words as an argument. - - You can use the following array to test your solution: ```javascript const words = [ - 'crab', - 'poison', - 'contagious', - 'simple', - 'bring', - 'sharp', - 'playground', - 'poison', - 'communion', - 'simple', - 'bring' + "crab", + "poison", + "contagious", + "simple", + "bring", + "sharp", + "playground", + "poison", + "communion", + "simple", + "bring", ]; ``` @@ -250,12 +266,21 @@ const words = [ Let's create a simple array search. -Declare a function named `doesWordExist` that will take in an array of words as one argument and a *word to search* for as the other. Return `true` if the word exists in the array; otherwise, return `false`. +Declare a function named `doesWordExist` that will take in an array of words as one argument and a _word to search_ for as the other. Return `true` if the word exists in the array; otherwise, return `false`. You can use the following array to test your solution: ```javascript -const words = ['machine', 'subset', 'trouble', 'starting', 'matter', 'eating', 'truth', 'disobedience']; +const words = [ + "machine", + "subset", + "trouble", + "starting", + "matter", + "eating", + "truth", + "disobedience", +]; ```
@@ -268,31 +293,27 @@ You can use the following array to test your solution: ```javascript const words = [ - 'machine', - 'matter', - 'subset', - 'trouble', - 'starting', - 'matter', - 'eating', - 'matter', - 'truth', - 'disobedience', - 'matter' + "machine", + "matter", + "subset", + "trouble", + "starting", + "matter", + "eating", + "matter", + "truth", + "disobedience", + "matter", ]; ```
- - ### Bonus - Iteration #8 - - #### Bonus - Iteration #8.1: Product of adjacent numbers -Given multiple arrays, find the greatest product of four adjacent numbers. +Given multiple arrays, find the greatest product of four adjacent numbers. We consider adjacent any four numbers that are next to each other horizontally or vertically. For example, if we have a 5x5 Matrix like: @@ -308,39 +329,95 @@ The greatest product will be the `20`x`20`x`20`x`4` = `32000`.
- - Declare a function named `greatestProduct(matrix)` to find it in the 20×20 grid below! ```javascript const matrix = [ - [08, 02, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, 08], - [49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 04, 56, 62, 00], - [81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 03, 49, 13, 36, 65], - [52, 70, 95, 23, 04, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, 91], - [22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80], - [24, 47, 32, 60, 99, 03, 45, 02, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50], - [32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70], - [67, 26, 20, 68, 02, 62, 12, 20, 95, 63, 94, 39, 63, 08, 40, 91, 66, 49, 94, 21], - [24, 55, 58, 05, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72], - [21, 36, 23, 09, 75, 00, 76, 44, 20, 45, 35, 14, 00, 61, 33, 97, 34, 31, 33, 95], - [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 03, 80, 04, 62, 16, 14, 09, 53, 56, 92], - [16, 39, 05, 42, 96, 35, 31, 47, 55, 58, 88, 24, 00, 17, 54, 24, 36, 29, 85, 57], - [86, 56, 00, 48, 35, 71, 89, 07, 05, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58], - [19, 80, 81, 68, 05, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, 40], - [04, 52, 08, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66], - [88, 36, 68, 87, 57, 62, 20, 72, 03, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69], - [04, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 08, 46, 29, 32, 40, 62, 76, 36], - [20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 04, 36, 16], - [20, 73, 35, 29, 78, 31, 90, 01, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 05, 54], - [01, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 01, 89, 19, 67, 48] + [ + 08, 02, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, + 08, + ], + [ + 49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 04, 56, 62, + 00, + ], + [ + 81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 03, 49, 13, 36, + 65, + ], + [ + 52, 70, 95, 23, 04, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, + 91, + ], + [ + 22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, + 80, + ], + [ + 24, 47, 32, 60, 99, 03, 45, 02, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, + 50, + ], + [ + 32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, + 70, + ], + [ + 67, 26, 20, 68, 02, 62, 12, 20, 95, 63, 94, 39, 63, 08, 40, 91, 66, 49, 94, + 21, + ], + [ + 24, 55, 58, 05, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, + 72, + ], + [ + 21, 36, 23, 09, 75, 00, 76, 44, 20, 45, 35, 14, 00, 61, 33, 97, 34, 31, 33, + 95, + ], + [ + 78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 03, 80, 04, 62, 16, 14, 09, 53, 56, + 92, + ], + [ + 16, 39, 05, 42, 96, 35, 31, 47, 55, 58, 88, 24, 00, 17, 54, 24, 36, 29, 85, + 57, + ], + [ + 86, 56, 00, 48, 35, 71, 89, 07, 05, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, + 58, + ], + [ + 19, 80, 81, 68, 05, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, + 40, + ], + [ + 04, 52, 08, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, + 66, + ], + [ + 88, 36, 68, 87, 57, 62, 20, 72, 03, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, + 69, + ], + [ + 04, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 08, 46, 29, 32, 40, 62, 76, + 36, + ], + [ + 20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 04, 36, + 16, + ], + [ + 20, 73, 35, 29, 78, 31, 90, 01, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 05, + 54, + ], + [ + 01, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 01, 89, 19, 67, + 48, + ], ]; ```
- - #### Bonus - Iteration #8.2: Product of diagonals Following the logic you've used in iteration #8.1, declare a function called `greatestProductOfDiagonals(matrix)`. It takes a matrix as a parameter and returns the greatest product of any four values laid out diagonally, in either direction. @@ -359,15 +436,13 @@ Following the logic you've used in iteration #8.1, declare a function called `gr I am stuck in the exercise and don't know how to solve the problem or where to start.
- If you are stuck in your code and don't know how to solve the problem or where to start, you should take a step back and try to form a clear question about the specific issue you are facing. This will help you narrow down the problem and come up with potential solutions. - - - For example, is it a concept that you don't understand, or are you receiving an error message that you don't know how to fix? It is usually helpful to try to state the problem as clearly as possible, including any error messages you are receiving. This can help you communicate the issue to others and potentially get help from classmates or online resources. +If you are stuck in your code and don't know how to solve the problem or where to start, you should take a step back and try to form a clear question about the specific issue you are facing. This will help you narrow down the problem and come up with potential solutions. +For example, is it a concept that you don't understand, or are you receiving an error message that you don't know how to fix? It is usually helpful to try to state the problem as clearly as possible, including any error messages you are receiving. This can help you communicate the issue to others and potentially get help from classmates or online resources. - Once you have a clear understanding of the problem, you will be able to start working toward the solution. +Once you have a clear understanding of the problem, you will be able to start working toward the solution. - [Back to top](#faqs) +[Back to top](#faqs) @@ -375,13 +450,13 @@ Following the logic you've used in iteration #8.1, declare a function called `gr All of the Jasmine tests are failing and in red. Why did this happen?
- One possible reason why all of the Jasmine tests are failing is that there is a syntax error in the code being tested. If the code contains a syntax error, it will not be loaded properly and none of the tests will be able to run. This will cause all of the tests to fail. +One possible reason why all of the Jasmine tests are failing is that there is a syntax error in the code being tested. If the code contains a syntax error, it will not be loaded properly and none of the tests will be able to run. This will cause all of the tests to fail. - To troubleshoot this issue, you will need to examine the code being tested for syntax errors. Look for missing brackets, semicolons, or other syntax issues that could be causing the problem. If you find a syntax error, correct it and try running the tests again. +To troubleshoot this issue, you will need to examine the code being tested for syntax errors. Look for missing brackets, semicolons, or other syntax issues that could be causing the problem. If you find a syntax error, correct it and try running the tests again. - Another possibility is that there is an issue with the tests. It is possible that you may have modified the test file and caused an issue. If you have made changes to the test file, try copying and pasting the original test file and running the tests again to see if this resolves the issue. +Another possibility is that there is an issue with the tests. It is possible that you may have modified the test file and caused an issue. If you have made changes to the test file, try copying and pasting the original test file and running the tests again to see if this resolves the issue. - [Back to top](#faqs) +[Back to top](#faqs) @@ -389,16 +464,16 @@ Following the logic you've used in iteration #8.1, declare a function called `gr How do you find a length of a string in JavaScript?
- To find the length of a string, use the `length` property. Here is an example: +To find the length of a string, use the `length` property. Here is an example: - ```js - const str = "Hello, world!""; - console.log(str.length); // 13 - ``` +```js +const str = "Hello, world!""; +console.log(str.length); // 13 +``` - The `length` property returns the number of characters in the string, including spaces and special characters. +The `length` property returns the number of characters in the string, including spaces and special characters. - [Back to top](#faqs) +[Back to top](#faqs) @@ -406,57 +481,57 @@ Following the logic you've used in iteration #8.1, declare a function called `gr How do I loop over an array?
- Loops allow you to repeat a block of code a certain number of times. There are several ways to loop over an array in JavaScript: +Loops allow you to repeat a block of code a certain number of times. There are several ways to loop over an array in JavaScript:
- #### For loop +#### For loop - The `for` loop is the most traditional way to loop through an array in JavaScript. It consists of three parts: the *initialization*, the *condition*, and the *increment/decrement*: +The `for` loop is the most traditional way to loop through an array in JavaScript. It consists of three parts: the _initialization_, the _condition_, and the _increment/decrement_: - ```js - const animals = ['cat', 'dog', 'bird']; +```js +const animals = ["cat", "dog", "bird"]; - // initialize counter variable (let i = 0) - // set condition (i < animals.length) - // increment counter (i++) - for (let i = 0; i < animals.length; i++) { - console.log(animals[i]); - } - ``` +// initialize counter variable (let i = 0) +// set condition (i < animals.length) +// increment counter (i++) +for (let i = 0; i < animals.length; i++) { + console.log(animals[i]); +} +``` - In initialization, you declare a counter variable and set its initial value. +In initialization, you declare a counter variable and set its initial value. - The condition is a boolean expression that is evaluated before each iteration of the loop. If the condition is `true`, the loop will continue. Once the condition turns `false`, the loop will terminate. +The condition is a boolean expression that is evaluated before each iteration of the loop. If the condition is `true`, the loop will continue. Once the condition turns `false`, the loop will terminate. - The increment/decrement is where you update the counter variable and it happens at the end of each iteration. +The increment/decrement is where you update the counter variable and it happens at the end of each iteration. - The block of code inside the loop is repeated during each iteration. +The block of code inside the loop is repeated during each iteration.
- #### While loop +#### While loop - The `while` loop is another way to loop through an array in JavaScript. It consists of a condition and a block of code that is executed as long as the condition is `true`. +The `while` loop is another way to loop through an array in JavaScript. It consists of a condition and a block of code that is executed as long as the condition is `true`. - Like the `for` loop, the `while` loop requires a counter variable to keep track of the current position in the array. The counter variable must be initialized before the loop and incremented or decremented at the end of each iteration. +Like the `for` loop, the `while` loop requires a counter variable to keep track of the current position in the array. The counter variable must be initialized before the loop and incremented or decremented at the end of each iteration. - ```js - const animals = ['cat', 'dog', 'bird']; +```js +const animals = ["cat", "dog", "bird"]; - // initialize a counter variable (i) - let i = 0; +// initialize a counter variable (i) +let i = 0; - // set condition (i < animals.length) - while (i < animals.length) { - console.log(animals[i]); - - // increment counter (i++) - i++; - } - ``` +// set condition (i < animals.length) +while (i < animals.length) { + console.log(animals[i]); + + // increment counter (i++) + i++; +} +``` - [Back to top](#faqs) +[Back to top](#faqs) @@ -464,39 +539,31 @@ Following the logic you've used in iteration #8.1, declare a function called `gr How do I loop over an array using the forEach() method?
- The `forEach()` method executes a provided function once for each array element. It does not return a new array but rather executes the function on each element in the array. +The `forEach()` method executes a provided function once for each array element. It does not return a new array but rather executes the function on each element in the array. - The syntax of the `forEach()` method is as follows: +The syntax of the `forEach()` method is as follows: - ```js - array.forEach( function(element) { - // code to be executed for each element - }); - ``` +```js +array.forEach(function (element) { + // code to be executed for each element +}); +```
- Here is an example that uses the `forEach()` method to log each element and its index in an array to the console: - - ```js - const fruits = ['apple', 'banana', 'cherry']; - - fruits.forEach( function(element, index) { - console.log(`${index}: ${element}`); - }); - ``` +Here is an example that uses the `forEach()` method to log each element and its index in an array to the console:
- You can also use an arrow function as the callback function for `forEach()`: +You can also use an arrow function as the callback function for `forEach()`: - ```js - fruits.forEach((element, index) => { - console.log(`${index}: ${element}`); - }); - ``` +```js +fruits.forEach((element, index) => { + console.log(`${index}: ${element}`); +}); +``` - [Back to top](#faqs) +[Back to top](#faqs) @@ -504,15 +571,15 @@ Following the logic you've used in iteration #8.1, declare a function called `gr What could cause array.length to return undefined?
- If you try to access the `.length` property on an array (e.g., `array.length`) but get `undefined`, it means that the variable you are accessing is not actually an array. +If you try to access the `.length` property on an array (e.g., `array.length`) but get `undefined`, it means that the variable you are accessing is not actually an array.
- **How do I fix this?** +**How do I fix this?** - Check that the variable you are trying to access is actually an array. +Check that the variable you are trying to access is actually an array. - [Back to top](#faqs) +[Back to top](#faqs) @@ -520,11 +587,11 @@ Following the logic you've used in iteration #8.1, declare a function called `gr Why is my function returning the last element of the array instead of the longest one?
- Your function might not be correctly checking for the longest element in the array. In other words, there may be an issue with the logic of the conditional statements in the function or with the comparison being used in the conditionals. +Your function might not be correctly checking for the longest element in the array. In other words, there may be an issue with the logic of the conditional statements in the function or with the comparison being used in the conditionals. - To fix this issue, you should check the logic of the conditional statements in the function. +To fix this issue, you should check the logic of the conditional statements in the function. - [Back to top](#faqs) +[Back to top](#faqs) @@ -532,29 +599,29 @@ Following the logic you've used in iteration #8.1, declare a function called `gr How can I compare the length of each word in an array in JavaScript?
- To compare the length of each word in an array in JavaScript, you can use a loop to iterate through the array and compare the length of each element using the `.length` property. +To compare the length of each word in an array in JavaScript, you can use a loop to iterate through the array and compare the length of each element using the `.length` property. - Here is an example of how you loop over an array: +Here is an example of how you loop over an array: - ```js - function findLongestWord(words) { - for (let i = 0; i < words.length; i++) { - console.log(words[i]); - } +```js +function findLongestWord(words) { + for (let i = 0; i < words.length; i++) { + console.log(words[i]); } - ``` +} +```
- To compare the length of each element, you should use a conditional statement in the following way: +To compare the length of each element, you should use a conditional statement in the following way: - ```js - if ( words[i].length > longestWord.length) { - console.log(`${words[i].length} is longer than ${longestWord.length}`); - } - ``` +```js +if (words[i].length > longestWord.length) { + console.log(`${words[i].length} is longer than ${longestWord.length}`); +} +``` - [Back to top](#faqs) +[Back to top](#faqs) @@ -562,23 +629,27 @@ Following the logic you've used in iteration #8.1, declare a function called `gr I am unable to push changes to the repository. What should I do?
-There are a couple of possible reasons why you may be unable to *push* changes to a Git repository: +There are a couple of possible reasons why you may be unable to _push_ changes to a Git repository: 1. **You have not committed your changes:** Before you can push your changes to the repository, you need to commit them using the `git commit` command. Make sure you have committed your changes and try pushing again. To do this, run the following terminal commands from the project folder: - ```bash - git add . - git commit -m "Your commit message" - git push - ``` -2. **You do not have permission to push to the repository:** If you have cloned the repository directly from the main Ironhack repository without making a *Fork* first, you do not have write access to the repository. -To check which remote repository you have cloned, run the following terminal command from the project folder: - ```bash - git remote -v - ``` + +```bash +git add . +git commit -m "Your commit message" +git push +``` + +2. **You do not have permission to push to the repository:** If you have cloned the repository directly from the main Ironhack repository without making a _Fork_ first, you do not have write access to the repository. + To check which remote repository you have cloned, run the following terminal command from the project folder: + +```bash +git remote -v +``` + If the link shown is the same as the main Ironhack repository, you will need to fork the repository to your GitHub account first and then clone your fork to your local machine to be able to push the changes. **Note**: You should make a copy of your local code to avoid losing it in the process. - [Back to top](#faqs) +[Back to top](#faqs) - \ No newline at end of file + diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index 3a7dbec41..f6bf2b616 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -1,24 +1,68 @@ // Iteration #1: Find the maximum -function maxOfTwoNumbers() {} +function maxOfTwoNumbers(a, b) { + if (a > b) { + return a + } else if (a < b) { + return b + } else { + return a + } + +}; // Iteration #2: Find longest word const words = ['mystery', 'brother', 'aviator', 'crocodile', 'pearl', 'orchard', 'crackpot']; -function findLongestWord() {} +function findLongestWord(arr) { + if (arr.length === 0) { + return null; + } + + let longestWord = ""; + + arr.forEach(function(word){ + if (arr[i].length > longestWord.length) { + return longestWord; + }}); + +} + + + + + + + + // Iteration #3: Calculate the sum const numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10]; -function sumNumbers() {} +function sumNumbers(arr) { + + if (arr.length === 0) { + return 0; + } + + let total = 0; + for (let i = 0; i < arr.length; i++) { + total += arr[i]; +} + return total +} // Iteration #3.1 Bonus: -function sum() {} +function sum(a, b) { + let total = 0; + total = a + b; + return total +} @@ -26,14 +70,44 @@ function sum() {} // Level 1: Array of numbers const numbersAvg = [2, 6, 9, 10, 7, 4, 1, 9]; -function averageNumbers() {} +function averageNumbers(arr) { + + if ( arr.length === 0 ) { + return null; + } + let result = 0; + + for (let i= 0; i < arr.length; i++) { + result += arr[i]; + } + result /= arr.length; + return result +} + // Level 2: Array of strings const wordsArr = ['seat', 'correspond', 'linen', 'motif', 'hole', 'smell', 'smart', 'chaos', 'fuel', 'palace']; -function averageWordLength() { } +function averageWordLength(arr) { + if (arr.length === 0) { + return null; + } + + let totalCharInArray = 0; + + arr.forEach(function(word) { + + totalCharInArray += word.length; + }); + const avgWordLength = totalCharInArray / arr.length; + + return avgWordLength + + } + + // Bonus - Iteration #4.1 function avg() {} @@ -52,15 +126,39 @@ const wordsUnique = [ 'bring' ]; -function uniquifyArray() {} +function uniquifyArray(arr) { + if (arr.length === 0 ) { + return null; + } + let uniqueStrings = []; + + for (i=0; i < arr.length; i++) { + if (uniqueStrings.indexOf(arr[i]) === -1) { + uniqueStrings.push(arr[i]); + } + } + return uniqueStrings +} // Iteration #6: Find elements const wordsFind = ['machine', 'subset', 'trouble', 'starting', 'matter', 'eating', 'truth', 'disobedience']; -function doesWordExist() {} - +function doesWordExist(arr, str) { + if (arr.length === 0 ) { + return null; + } + let wordExist = "" + arr.forEach(function(str){ + if (arr[i] === str) { + wordExist = true; + } + else { + return false + } + }); +} // Iteration #7: Count repetition @@ -78,7 +176,13 @@ const wordsCount = [ 'matter' ]; -function howManyTimes() {} +function howManyTimes(arr) { + if (arr.length === 0 ) { + return null; + } + + +} @@ -106,7 +210,11 @@ const matrix = [ [1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48] ]; -function greatestProduct() {} +function greatestProduct() { + if (arr.length === 0 ) { + return null; + } +} From 344474e5f5675cf68def1c832f0fc68237ff4e8d Mon Sep 17 00:00:00 2001 From: Mary Sue Meissner Date: Fri, 12 May 2023 10:18:30 +0400 Subject: [PATCH 2/5] Reviewed Status --- src/functions-and-arrays.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index f6bf2b616..a95a435c6 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -159,7 +159,7 @@ function doesWordExist(arr, str) { } }); } - + // Iteration #7: Count repetition const wordsCount = [ From 8e345b4144632052ac91c4ec4a3cd76b17ff7720 Mon Sep 17 00:00:00 2001 From: Mary Sue Meissner Date: Fri, 12 May 2023 10:34:45 +0400 Subject: [PATCH 3/5] Lab results --- src/functions-and-arrays.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index a95a435c6..3fa9f5296 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -235,4 +235,4 @@ if (typeof module !== 'undefined') { howManyTimes, greatestProduct }; -} +} From fc53fa41fb6f1942d1db97aa56b2d19db8538c84 Mon Sep 17 00:00:00 2001 From: Mary Sue Meissner Date: Fri, 12 May 2023 10:41:51 +0400 Subject: [PATCH 4/5] Uploading changes to lab --- src/functions-and-arrays.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index 3fa9f5296..6dd4e4f2e 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -236,3 +236,4 @@ if (typeof module !== 'undefined') { greatestProduct }; } + \ No newline at end of file From 24145f995b00356e8abd0b0663829cb8b0c05c72 Mon Sep 17 00:00:00 2001 From: Mary Sue Meissner Date: Fri, 12 May 2023 10:45:55 +0400 Subject: [PATCH 5/5] update --- lab-javascript-basic-algorithms | 1 + src/functions-and-arrays.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 160000 lab-javascript-basic-algorithms diff --git a/lab-javascript-basic-algorithms b/lab-javascript-basic-algorithms new file mode 160000 index 000000000..06110eff5 --- /dev/null +++ b/lab-javascript-basic-algorithms @@ -0,0 +1 @@ +Subproject commit 06110eff5461413a2639146417f85560b59b3313 diff --git a/src/functions-and-arrays.js b/src/functions-and-arrays.js index 6dd4e4f2e..1ae93a711 100644 --- a/src/functions-and-arrays.js +++ b/src/functions-and-arrays.js @@ -236,4 +236,4 @@ if (typeof module !== 'undefined') { greatestProduct }; } - \ No newline at end of file + \ No newline at end of file