Skip to content

Commit 87e4421

Browse files
committed
Hello
0 parents  commit 87e4421

File tree

12 files changed

+6931
-0
lines changed

12 files changed

+6931
-0
lines changed

.eslintrc.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"plugins": [ "jasmine" ],
3+
"env": {
4+
"jasmine": true
5+
},
6+
"extends" : ["airbnb-base/legacy", "plugin:jasmine/recommended"],
7+
"rules": {
8+
"func-names": "off",
9+
"no-alert": "off",
10+
"no-console": "off",
11+
"no-plusplus": "off",
12+
"no-unused-vars": "warn",
13+
"vars-on-top": "off",
14+
"no-multi-spaces": "off"
15+
}
16+
}

README.md

Lines changed: 262 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
1+
![Ironhack logo](https://i.imgur.com/1QgrNNw.png)
2+
3+
# JS | Functions & Arrays
4+
5+
## Learning Goals
6+
7+
In this exercise you will apply:
8+
9+
- Array iteration techniques
10+
- Using functions to manipulate and transform arrays
11+
12+
## Introduction
13+
14+
Manipulating arrays in code is a very common operation. Whether you're creating a total for a shopping cart, grabbing only the first names out of a list of people, or moving a piece on a chessboard, you're probably going to be modifying or manipulating an array in some way.
15+
16+
## Requirements
17+
18+
- [Fork this repo](https://guides.github.com/activities/forking/)
19+
- Clone this repo into your `~/code/labs`
20+
- Write your code in the js file provided in the `starter-code`
21+
22+
## Submission
23+
24+
Upon completion, run the following commands
25+
```
26+
$ git add .
27+
$ git commit -m 'done'
28+
$ git push origin master
29+
```
30+
Navigate to your repo and create a Pull Request -from your master branch to the original repository master branch.
31+
32+
In the Pull request name, add your name and last names separated by a dash '-'
33+
34+
## Testing Introduction
35+
36+
### What is testing?
37+
38+
Software testing is a process of executing an application to validate and verify that it meets the business and technical requirements and works as expected.
39+
40+
Testing is a process, not a single activity. So the process of designing tests early at the beginning of the development and the product's lifecycle can help to prevent deficiencies in the code or product design.
41+
42+
We have created all the tests you need to create the solution, and you have to execute them all and create the code to accomplish all the requirements.
43+
44+
Tests prove that your code actually works in every situation in which it’s designed to work. Even when you are improving the design or creating new features, you can change your current code without breaking what already works.
45+
46+
### Testing with Jasmine
47+
48+
![Jasmine Logo](https://i.imgur.com/A1pop7h.png)
49+
50+
Jasmine is an automated testing framework for JavaScript. It is designed to be used in BDD (behavior-driven development) programming which focuses more on the business value than on the technical details.
51+
52+
We have already included Jasmine in the project you just forked, so let's see how to use it to implement our code.
53+
54+
### Usage
55+
56+
Before start coding, we will explain the project structure we have provided you:
57+
58+
```
59+
starter-code/
60+
├── jasmine
61+
│   ├── jasmine-2.8.0/
62+
│   | └── ...
63+
├── src
64+
│   └── functions-and-arrays.js
65+
├── tests
66+
│   └── FunctionsAndArraysSpec.js
67+
└─ SpecRunner.html
68+
```
69+
70+
We will be working with the `functions-and-arrays.js` file inside the `src` folder. In the `jasmine` folder you can find all the files that compose Jasmine, that is already linked with the `SpecRunner.html` file.
71+
72+
**Run tests**
73+
74+
Run the tests with Jasmine is super easy, you just have to open the `SpecRunner.html` file in your browser. You will find something like this:
75+
76+
![image](https://user-images.githubusercontent.com/23629340/33389609-c2f3965c-d533-11e7-9a03-e0a89314dd98.png)
77+
78+
**Pass the tests**
79+
80+
You have to write your code on the `src/functions-and-arrays.js` file. Following the instructions, you should go step by step passing all the tests.
81+
82+
Do not rush to go through all of them at once, take your time to read carefully about what the iteration is asking you, and solve the errors one by one.
83+
84+
When coding with tests, is super important to read and understand the errors we are having for each test, this way we will know what it expect from your code.
85+
86+
## Deliverables
87+
88+
All our work will be located in the `functions-and-arrays.js` file, so that will be enough. Anyway, you have to `push` the whole repo to Github.
89+
90+
## Find the maximum
91+
92+
Define a function `maxOfTwoNumbers` that takes two numbers as arguments and returns the largest.
93+
94+
## Finding Longest Word
95+
96+
Write a function `findLongestWord` that takes an array of words and returns the longest one. If there are 2 with the same length, it should return the first occurrence.
97+
98+
**Starter Code**
99+
100+
```javascript
101+
var words = [
102+
'mystery',
103+
'brother',
104+
'aviator',
105+
'crocodile',
106+
'pearl',
107+
'orchard',
108+
'crackpot'
109+
];
110+
```
111+
112+
## Calculating a Sum
113+
114+
Calculating a sum is as simple as iterating over an array and adding each of the elements together.
115+
116+
Semantically [reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) is the best method to use for this, but you can use any loop we've discussed so far.
117+
118+
Create a `sumArray` function that takes an array of numbers as a parameter, and calculate the sum of all its numbers:
119+
120+
**Starter Code**
121+
122+
```javascript
123+
var numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10];
124+
```
125+
126+
## Calculate the Average
127+
128+
Calculating an average is an extremely common task. Let's practice it a bit.
129+
130+
**Algorithm**
131+
132+
1. Find the sum as we did in the first exercise
133+
2. Take the sum from step 1, and divide it by the number of elements in the list.
134+
135+
### Level 1: Array of Numbers
136+
137+
Write a function `averageNumbers` that receives an array of numbers and calculate the average of the numbers:
138+
139+
**Starter Code**
140+
141+
```javascript
142+
var numbers = [2, 6, 9, 10, 7, 4, 1, 9];
143+
```
144+
145+
### Level 2: Array of Strings
146+
147+
Write a function `averageWordLength` that receives an array of words and calculate the average length of the words:
148+
149+
**Starter Code**
150+
151+
```javascript
152+
var words = [
153+
'seat',
154+
'correspond',
155+
'linen',
156+
'motif',
157+
'hole',
158+
'smell',
159+
'smart',
160+
'chaos',
161+
'fuel',
162+
'palace'
163+
];
164+
```
165+
166+
## Unique Arrays
167+
168+
Take the following array, remove the duplicates, and return a new array. You're more than likely going to want to check out the [`indexOf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) function.
169+
170+
Do this in the form of a function `uniquifyArray` that receives an array of words as a parameter.
171+
172+
**Starter Code**
173+
174+
```javascript
175+
var words = [
176+
'crab',
177+
'poison',
178+
'contagious',
179+
'simple',
180+
'bring',
181+
'sharp',
182+
'playground',
183+
'poison',
184+
'communion',
185+
'simple',
186+
'bring'
187+
];
188+
189+
```
190+
191+
## Finding Elements
192+
193+
Let's create a simple array search.
194+
195+
Write a function `doesWordExist` that will take in an array of words as one argument, and a word to search for as the other. Return `true` if it exists, otherwise, return `false`. **Don't** use `indexOf` for this one. :)
196+
197+
**Starter Code**
198+
```javascript
199+
var words = [
200+
'machine',
201+
'subset',
202+
'trouble',
203+
'starting',
204+
'matter',
205+
'eating',
206+
'truth',
207+
'disobedience'
208+
];
209+
```
210+
211+
## Counting Repetion
212+
213+
Write a function `howManyTimes` that will take in an array of words as one argument, and a word to search for as the other. The function will return the number of times that word appears in the array.
214+
215+
**Starter Code**
216+
217+
```javascript
218+
var words = [
219+
'machine',
220+
'matter',
221+
'subset',
222+
'trouble',
223+
'starting',
224+
'matter',
225+
'eating',
226+
'matter',
227+
'truth',
228+
'disobedience'
229+
'matter'
230+
];
231+
```
232+
233+
## Bonus Quest
234+
235+
In the 20×20 grid below; What is the greatest product of four adjacent numbers in the same direction (up, down, left, right)?
236+
237+
Write a function `greatestProduct` to find the answer!
238+
239+
```javascript
240+
var matrix = [
241+
[08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08],
242+
[49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00],
243+
[81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65],
244+
[52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91],
245+
[22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80],
246+
[24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50],
247+
[32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70],
248+
[67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21],
249+
[24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72],
250+
[21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95],
251+
[78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92],
252+
[16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57],
253+
[86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58],
254+
[19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40],
255+
[04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66],
256+
[88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69],
257+
[04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36],
258+
[20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16],
259+
[20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54],
260+
[01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48],
261+
];
262+
```

starter-code/SpecRunner.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<title>Jasmine Spec Runner v2.8.0</title>
6+
7+
<link rel="shortcut icon" type="image/png" href="jasmine/jasmine-2.8.0/jasmine_favicon.png">
8+
<link rel="stylesheet" href="jasmine/jasmine-2.8.0/jasmine.css">
9+
10+
<script src="jasmine/jasmine-2.8.0/jasmine.js"></script>
11+
<script src="jasmine/jasmine-2.8.0/jasmine-html.js"></script>
12+
<script src="jasmine/jasmine-2.8.0/boot.js"></script>
13+
14+
<!-- include source files here... -->
15+
<script src="src/functions-and-arrays.js"></script>
16+
17+
<!-- include spec files here... -->
18+
<script src="tests/FunctionsAndArraysSpec.js"></script>
19+
20+
</head>
21+
22+
<body>
23+
</body>
24+
</html>

0 commit comments

Comments
 (0)