added trailing semicolon to all function and module exports

This commit is contained in:
Michael Frank 2021-05-10 21:27:55 +12:00
parent 58d2eb108a
commit 2f63b3e380
30 changed files with 1770 additions and 7014 deletions

12
.eslintrc.json Normal file
View File

@ -0,0 +1,12 @@
{
"extends": "airbnb-base",
"plugins": [
"import"
],
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
}
}

View File

@ -1,6 +1,6 @@
# Exercise XX - caesar cipher
# Exercise XX - Caesar cipher
Implement the legendary caesar cipher:
Implement the legendary Caesar cipher:
> In cryptography, a Caesar cipher, also known as Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence.
@ -31,5 +31,3 @@ negative numbers should work as well:
```javascript
caesar('Mjqqt, Btwqi!', -5) // returns 'Hello, World!'
```

View File

@ -1,5 +1,5 @@
const caesar = function() {
}
};;
module.exports = caesar
module.exports = caesar;

View File

@ -2,5 +2,5 @@ The goal for this exercise is to create a calculator that does the following:
add, subtract, get the sum, multiply, get the power, and find the factorial
In order to do this please fill out each function with your solution. Make sure to return the value so you can test it in Jasmine! To see the expected value
take a look at the spec file that houses the Jasmine test cases.
In order to do this please fill out each function with your solution. Make sure to return the value so you can test it in Jest! To see the expected value
take a look at the spec file that houses the Jest test cases.

View File

@ -1,26 +1,26 @@
const add = function() {
}
};
const subtract = function() {
}
};
const sum = function() {
}
};
const multiply = function() {
}
};;
const power = function() {
}
};
const factorial = function() {
}
};
module.exports = {
add,
@ -29,4 +29,4 @@ module.exports = {
multiply,
power,
factorial
}
};

View File

@ -1,55 +1,55 @@
const calculator = require ('./calculator.js');
const calculator = require('./calculator');
describe('add', () => {
test('adds 0 and 0', () => {
expect(calculator.add(0,0)).toBe(0);
});
test('adds 2 and 2', () => {
test.skip('adds 2 and 2', () => {
expect(calculator.add(2,2)).toBe(4);
});
test('adds positive numbers', () => {
test.skip('adds positive numbers', () => {
expect(calculator.add(2,6)).toBe(8);
});
});
describe('subtract', () => {
test('subtracts numbers', () => {
test.skip('subtracts numbers', () => {
expect(calculator.subtract(10,4)).toBe(6);
});
});
describe('sum', () => {
test('computes the sum of an empty array', () => {
test.skip('computes the sum of an empty array', () => {
expect(calculator.sum([])).toBe(0);
});
test('computes the sum of an array of one number', () => {
test.skip('computes the sum of an array of one number', () => {
expect(calculator.sum([7])).toBe(7);
});
test('computes the sum of an array of two numbers', () => {
test.skip('computes the sum of an array of two numbers', () => {
expect(calculator.sum([7,11])).toBe(18);
});
test('computes the sum of an array of many numbers', () => {
test.skip('computes the sum of an array of many numbers', () => {
expect(calculator.sum([1,3,5,7,9])).toBe(25);
});
});
describe('multiply', () => {
test('multiplies two numbers', () => {
test.skip('multiplies two numbers', () => {
expect(calculator.multiply([2,4])).toBe(8);
});
test('multiplies several numbers', () => {
test.skip('multiplies several numbers', () => {
expect(calculator.multiply([2,4,6,8,10,12,14])).toBe(645120);
});
});
describe('power', () => {
test('raises one number to the power of another number', () => {
test.skip('raises one number to the power of another number', () => {
expect(calculator.power(4,3)).toBe(64); // 4 to third power is 64
});
});

View File

@ -1,8 +1,8 @@
# Exercise XX - fibonacci
# Exercise XX - Fibonacci
Create a function that returns a specific member of the fibonacci sequence:
Create a function that returns a specific member of the Fibonacci sequence:
> a series of numbers in which each number ( Fibonacci number ) is the sum of the two preceding numbers. The simplest is the series 1, 1, 2, 3, 5, 8, etc.
> A series of numbers in which each number ( Fibonacci number ) is the sum of the two preceding numbers. The simplest is the series 1, 1, 2, 3, 5, 8, etc.
```javascript
fibonacci(4) // returns the 4th member of the series: 3 (1, 1, 2, 3)

View File

@ -1,5 +1,5 @@
const fibonacci = function() {
}
};
module.exports = fibonacci;

View File

@ -1,9 +1,8 @@
# Find the Oldest
given an array of objects representing people with a birth and death year, return the oldest person.
Given an array of objects representing people with a birth and death year, return the oldest person.
## Hints
- You should return the whole person object, but the tests mostly just check to make sure the name is correct.
- this can be done with a couple of chained array methods, or by using `reduce`.
- One of the tests checks for people with no death-date.. use JavaScript's Date function to get their age as of today.

View File

@ -1,5 +1,5 @@
const findTheOldest = function() {
}
};
module.exports = findTheOldest
module.exports = findTheOldest;

View File

@ -1,5 +1,5 @@
let <%= title %> = function() {
}
};
module.exports = <%= title %>
module.exports = <%= title %>;

View File

@ -15,7 +15,7 @@ const books = [
]
```
your job is to write a function that takes the array and returns an array of titles:
Your job is to write a function that takes the array and returns an array of titles:
```javascript
getTheTitles(books) // ['Book','Book2']

View File

@ -1,5 +1,5 @@
const getTheTitles = function() {
}
};
module.exports = getTheTitles;

View File

@ -13,7 +13,7 @@ describe('getTheTitles', () => {
]
test('gets titles', () => {
expect(getTheTitles(books)).toBe(['Book','Book2']);
expect(getTheTitles(books)).toEqual(['Book','Book2']);
});
});

View File

@ -6,7 +6,7 @@ In this directory you will find 2 other files:
1. `helloWorld.js`
2. `helloWorld.spec.js`
This setup should be the same for all of the exercises. The plain javascript file is where you'll write your code, and the `spec` file contains the tests that verify your code is functional.
This setup should be the same for all of the exercises. The plain javascript file is where you'll write your code, and the `spec` file contains the tests that verify your code is functional.
Let's look at the spec file first:
```javascript
@ -20,9 +20,9 @@ describe('Hello World', function() {
```
At the very top of the file we use `require()` to import the code from the javascript file (`helloWorld.js`) so that we can test it.
The next block (`describe()`) is the body of the test. Basically, all it's doing is running your code and testing to see if the output is correct. The `test()` function describes what should be happening in plain english and then includes the `expect()` function. For this simple example it should be pretty simple to read.
The next block (`describe()`) is the body of the test. Basically, all it's doing is running your code and testing to see if the output is correct. The `test()` function describes what should be happening in plain english and then includes the `expect()` function. For this simple example it should be pretty simple to read.
For now you do not need to worry about how to write tests, but you should try to get comfortable enough with the syntax to figure out what the tests are asking you to do. Go ahead and run the tests by entering `jasmine helloWorld.spec.js` in the terminal and watch it fail. The output from that command should tell you exactly what went wrong with your code. In this case, running the `helloWorld()` function should return the phrase 'Hello, World!' but instead it returns an empty string...
For now you do not need to worry about how to write tests, but you should try to get comfortable enough with the syntax to figure out what the tests are asking you to do. Go ahead and run the tests by entering `npm test helloWorld.spec.js` in the terminal and watch it fail. The output from that command should tell you exactly what went wrong with your code. In this case, running the `helloWorld()` function should return the phrase 'Hello, World!' but instead it returns an empty string...
so let's look at the javascript file:
```javascript
@ -30,13 +30,13 @@ const helloWorld = function() {
return ''
}
module.exports = helloWorld;
module.exports = helloWorld
```
In this file we have a simple function called helloWorld that returns an empty string... which is exactly what our test was complaining about. The `module.exports` on the last line is how we export the function so that it can be imported with `require()` in the spec file.
In this file we have a simple function called helloWorld that returns an empty string... which is exactly what our test was complaining about. The `module.exports` on the last line is how we export the function so that it can be imported with `require()` in the spec file.
Go ahead and see if you can make the test pass by editing the return value of the function, and then running the test file again.
Just to make sure, in case you're confused at this point, the test is telling you that running the function `helloWorld` should return the phrase `Hello, World!`. Punctuation and capitalization definitely matter here, so double check that if the test still isn't passing.
Just to make sure, in case you're confused at this point, the test is telling you that running the function `helloWorld` should return the phrase `Hello, World!`. Punctuation and capitalization definitely matter here, so double check that if the test still isn't passing.
this is what the final function should look like:
```javascript
@ -44,7 +44,7 @@ const helloWorld = function() {
return 'Hello, World!'
}
module.exports = helloWorld;
module.exports = helloWorld
```
For the most part we've set up these tests in such a way that you only have to write the code being tested. You should not have to worry about importing or exporting anything at this stage, so just work around that bit of the code and write what it takes to make them pass!
For the most part we've set up these tests in such a way that you only have to write the code being tested. You should not have to worry about importing or exporting anything at this stage.. so just work around that bit of the code and write what it takes to make them pass!

View File

@ -1,5 +1,5 @@
const leapYears = function() {
}
};
module.exports = leapYears
module.exports = leapYears;

8577
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,27 @@
{
{
"name": "javascript-exercises",
"version": "1.0.0",
"description": "These are a series of javascript exercises intended to be used alongside the curriculum at 'The Odin Project' They start very simply, but get more involved as you progress through them.",
"main": "index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/TheOdinProject/javascript-exercises.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/TheOdinProject/javascript-exercises/issues"
},
"homepage": "https://github.com/TheOdinProject/javascript-exercises#readme",
"devDependencies": {
"jest": "^26.6.3",
"jest-cli": "^26.6.3"
"jest-cli": "^26.6.3",
"eslint": "^7.26.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.22.1"
},
"scripts": {
"test": "jest"
"test": "jest",
"lint" : "./node_modules/.bin/eslint"
}
}

View File

@ -1,5 +1,5 @@
const palindromes = function() {
}
};
module.exports = palindromes;

View File

@ -1,5 +1,5 @@
function pigLatin(string) {
}
};
module.exports = pigLatin
module.exports = pigLatin;

View File

@ -19,38 +19,38 @@ const pigLatin = require('./pigLatin')
describe('translate', () => {
test('translates a word beginning with a vowel', () => {
expect(pigLatin.translate("apple")).toBe('appleay');
expect(pigLatin("apple")).toBe('appleay');
});
test.skip('translates a word beginning with a consonant', () => {
expect(pigLatin.translate("banana")).toBe("ananabay");
expect(pigLatin("banana")).toBe("ananabay");
});
test.skip('translates a word beginning with two consonants', () => {
expect(pigLatin.translate("cherry")).toBe('errychay');
expect(pigLatin("cherry")).toBe('errychay');
});
test.skip('translates two words', () => {
expect(pigLatin.translate("eat pie")).toBe('eatay iepay');
expect(pigLatin("eat pie")).toBe('eatay iepay');
});
test.skip('translates a word beginning with three consonants', () => {
expect(pigLatin.translate("three")).toBe("eethray");
expect(pigLatin("three")).toBe("eethray");
});
test.skip('counts "sch" as a single phoneme', () => {
expect(pigLatin.translate("school")).toBe("oolschay");
expect(pigLatin("school")).toBe("oolschay");
});
test.skip('counts "qu" as a single phoneme', () => {
expect(pigLatin.translate("quiet")).toBe("ietquay");
expect(pigLatin("quiet")).toBe("ietquay");
});
test.skip('counts "qu" as a consonant even when its preceded by a consonant', () => {
expect(pigLatin.translate("square")).toBe("aresquay");
expect(pigLatin("square")).toBe("aresquay");
});
test.skip('translates many words', () => {
expect(pigLatin.translate("the quick brown fox")).toBe("ethay ickquay ownbray oxfay");
expect(pigLatin("the quick brown fox")).toBe("ethay ickquay ownbray oxfay");
});
});

View File

@ -8,10 +8,9 @@ removeFromArray([1, 2, 3, 4], 3); // should remove 3 and return [1,2,4]
## Hints
the first test on this one is fairly easy, but there are a few things to think about(or google) here for the later tests:
The first test on this one is fairly easy, but there are a few things to think about(or google) here for the later tests:
- how to remove a single element from an array
- how to deal with multiple optional arguments in a javascript function
- [Check this link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments). Scroll down to the bit about `Array.from` or the spread operator. - [Or this link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).

View File

@ -1,5 +1,5 @@
const removeFromArray = function() {
}
};
module.exports = removeFromArray
module.exports = removeFromArray;

View File

@ -2,24 +2,24 @@ const removeFromArray = require('./removeFromArray')
describe('removeFromArray', () => {
test('removes a single value', () => {
expect(removeFromArray([1, 2, 3, 4], 3)).toBe([1, 2, 4]);
expect(removeFromArray([1, 2, 3, 4], 3)).toEqual([1, 2, 4]);
});
test.skip('removes multiple values', () => {
expect(removeFromArray([1, 2, 3, 4], 3, 2)).toBe([1, 4]);
expect(removeFromArray([1, 2, 3, 4], 3, 2)).toEqual([1, 4]);
});
test.skip('ignores non present values', () => {
expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toBe([1, 2, 3, 4]);
expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toEqual([1, 2, 3, 4]);
});
test.skip('ignores non present values, but still works', () => {
expect(removeFromArray([1, 2, 3, 4], 7, 2)).toBe([1, 3, 4]);
expect(removeFromArray([1, 2, 3, 4], 7, 2)).toEqual([1, 3, 4]);
});
test.skip('can remove all values', () => {
expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toBe([]);
expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toEqual([]);
});
test.skip('works with strings', () => {
expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toBe([2, "ho"]);
expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toEqual([2, "ho"]);
});
test.skip('only removes same type', () => {
expect(removeFromArray([1, 2, 3], "1", 3)).toBe([1, 2]);
expect(removeFromArray([1, 2, 3], "1", 3)).toEqual([1, 2]);
});
});

View File

@ -15,4 +15,11 @@ You will notice in this exercise that there are multiple tests (see in file `rep
- Create a variable to hold the string you're going to return, create a loop that repeats the given number of times and add the given string to the result on each loop.
- If running `jasmine repeatString.spec.js` raises `Temporarily disabled with test.skip` errors, make sure you have enabled the rest of the tests (see above).
- If running `npm test repeatString.spec.js` returns results similar to the below:
```
Test Suites: 1 passed, 1 total
Tests: 6 skipped, 1 passed, 7 total
```
- Make sure you have enabled the rest of the tests (see above).

View File

@ -1,5 +1,5 @@
const repeatString = function() {
}
};
module.exports = repeatString
module.exports = repeatString;

View File

@ -1,5 +1,5 @@
const reverseString = function() {
}
};
module.exports = reverseString
module.exports = reverseString;

View File

@ -1,5 +1,5 @@
const snakeCase = function() {
}
};
module.exports = snakeCase
module.exports = snakeCase;

View File

@ -1,5 +1,5 @@
const sumAll = function() {
}
};
module.exports = sumAll
module.exports = sumAll;

View File

@ -1,10 +1,10 @@
const ftoc = function() {
}
};
const ctof = function() {
}
};
module.exports = {
ftoc,