From 00ac1acc01b651d1a9df259e597545038c66c589 Mon Sep 17 00:00:00 2001 From: paulbourceret Date: Wed, 29 May 2019 20:21:46 +0200 Subject: [PATCH] lab day3 --- starter-code/src/functions-and-arrays.js | 478 ++++++++++++++++--- starter-code/tests/FunctionsAndArraysSpec.js | 215 +++++---- 2 files changed, 552 insertions(+), 141 deletions(-) diff --git a/starter-code/src/functions-and-arrays.js b/starter-code/src/functions-and-arrays.js index 2fcd81e6e..534e13f21 100644 --- a/starter-code/src/functions-and-arrays.js +++ b/starter-code/src/functions-and-arrays.js @@ -1,100 +1,458 @@ // Find the maximum +function maxOfTwoNumbers(a, b) { + if (a > b) { + return a; + } else if (a < b) { + return b; + } else if (a === b) { + return a; + } +} + // Finding Longest Word var words = [ - 'mystery', - 'brother', - 'aviator', - 'crocodile', - 'pearl', - 'orchard', - 'crackpot' + "mystery", + "brother", + "aviator", + "crocodile", + "pearl", + "orchard", + "crackpot" ]; +function findLongestWord(words) { + let long = ""; + for (let i = 0; i < words.length; i++) { + if (long.length < words[i].length) { + long = words[i]; + } + } + return long || undefined; +} + // Calculating a Sum var numbers = [6, 12, 1, 18, 13, 16, 2, 1, 8, 10]; +function sumArray(numbers) { + let sum = 0; + if (numbers === 0) { + return 0; + } else { + for (let i = 0; i < numbers.length; i++) { + sum = sum + numbers[i]; + } + return sum; + } +} + // Calculate the Average var numbersAvg = [2, 6, 9, 10, 7, 4, 1, 9]; +function averageNumbers(numbersAvg) { + let avg = 0; + { + for (let i = 0; i < numbersAvg.length; i++) { + avg = avg + numbersAvg[i]; + } + return avg / numbersAvg.length || undefined; + } +} + // Array of Strings var wordsArr = [ - 'seat', - 'correspond', - 'linen', - 'motif', - 'hole', - 'smell', - 'smart', - 'chaos', - 'fuel', - 'palace' + "seat", + "correspond", + "linen", + "motif", + "hole", + "smell", + "smart", + "chaos", + "fuel", + "palace" ]; +function averageWordLength(wordsArr) { + let avgWord = 0; + { + for (let i = 0; i < wordsArr.length; i++) { + avgWord = avgWord + Number(wordsArr[i].length); + } + return avgWord / wordsArr.length || undefined; + } +} + // Unique Arrays var wordsUnique = [ - 'crab', - 'poison', - 'contagious', - 'simple', - 'bring', - 'sharp', - 'playground', - 'poison', - 'communion', - 'simple', - 'bring' + "crab", + "poison", + "contagious", + "simple", + "bring", + "sharp", + "playground", + "poison", + "communion", + "simple", + "bring" ]; +function unique(value, index, self) { + return self.indexOf(value) === index; +} +function uniquifyArray(wordsUnique) { + if (wordsUnique === undefined || wordsUnique.length === 0) { + return undefined; + } else { + return (Unique = wordsUnique.filter(unique)); + } +} + // Finding Elements var wordsFind = [ - 'machine', - 'subset', - 'trouble', - 'starting', - 'matter', - 'eating', - 'truth', - 'disobedience' + "machine", + "subset", + "trouble", + "starting", + "matter", + "eating", + "truth", + "disobedience" ]; +var otherWord = "trouble"; + +function doesWordExist(wordsFind, otherWord) { + return wordsFind.includes(otherWord); +} + // Counting Repetion var wordsCount = [ - 'machine', - 'matter', - 'subset', - 'trouble', - 'starting', - 'matter', - 'eating', - 'matter', - 'truth', - 'disobedience', - 'matter' + "machine", + "matter", + "subset", + "trouble", + "starting", + "matter", + "eating", + "matter", + "truth", + "disobedience", + "matter" ]; + +var word = "matter"; + +function howManyTimes(wordsCount, word) { + let count = 0; + if (!wordsCount.length) { + return false; + } else { + for (let i = 0; i < wordsCount.length; i++) { + if (wordsCount[i] === word) { + count++; + } + } + } + return count; +} // Bonus Quest var matrix = [ [8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8], - [49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0], - [81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65], + [ + 49, + 49, + 99, + 40, + 17, + 81, + 18, + 57, + 60, + 87, + 17, + 40, + 98, + 43, + 69, + 48, + 4, + 56, + 62, + 0 + ], + [ + 81, + 49, + 31, + 73, + 55, + 79, + 14, + 29, + 93, + 71, + 40, + 67, + 53, + 88, + 30, + 3, + 49, + 13, + 36, + 65 + ], [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 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, 3, 45, 2, 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, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21], - [24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72], + [ + 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, + 3, + 45, + 2, + 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, + 2, + 62, + 12, + 20, + 95, + 63, + 94, + 39, + 63, + 8, + 40, + 91, + 66, + 49, + 94, + 21 + ], + [ + 24, + 55, + 58, + 5, + 66, + 73, + 99, + 26, + 97, + 17, + 78, + 78, + 96, + 83, + 14, + 88, + 34, + 89, + 63, + 72 + ], [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95], [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92], - [16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57], + [ + 16, + 39, + 5, + 42, + 96, + 35, + 31, + 47, + 55, + 58, + 88, + 24, + 0, + 17, + 54, + 24, + 36, + 29, + 85, + 57 + ], [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58], - [19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40], + [ + 19, + 80, + 81, + 68, + 5, + 94, + 47, + 69, + 28, + 73, + 92, + 13, + 86, + 52, + 17, + 77, + 4, + 89, + 55, + 40 + ], [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66], - [88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69], - [4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36], - [20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16], - [20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54], + [ + 88, + 36, + 68, + 87, + 57, + 62, + 20, + 72, + 3, + 46, + 33, + 67, + 46, + 55, + 12, + 32, + 63, + 93, + 53, + 69 + ], + [ + 4, + 42, + 16, + 73, + 38, + 25, + 39, + 11, + 24, + 94, + 72, + 18, + 8, + 46, + 29, + 32, + 40, + 62, + 76, + 36 + ], + [ + 20, + 69, + 36, + 41, + 72, + 30, + 23, + 88, + 34, + 62, + 99, + 69, + 82, + 67, + 59, + 85, + 74, + 4, + 36, + 16 + ], + [ + 20, + 73, + 35, + 29, + 78, + 31, + 90, + 1, + 74, + 31, + 49, + 71, + 48, + 86, + 81, + 16, + 23, + 57, + 5, + 54 + ], [1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48] ]; diff --git a/starter-code/tests/FunctionsAndArraysSpec.js b/starter-code/tests/FunctionsAndArraysSpec.js index 33205fcf7..db1fa4ec3 100644 --- a/starter-code/tests/FunctionsAndArraysSpec.js +++ b/starter-code/tests/FunctionsAndArraysSpec.js @@ -1,6 +1,6 @@ /* eslint no-undef: 'off' */ function shuffle(currentArray) { - var array = currentArray.map(function (arr) { + var array = currentArray.map(function(arr) { return arr.slice(); }); var counter = array.length; @@ -13,185 +13,239 @@ function shuffle(currentArray) { } return array; } -describe('Find the maximum - maxOfTwoNumbers', function () { - it('Defines maxOfTwoNumbers', function () { - expect(typeof maxOfTwoNumbers).toBe('function'); +describe("Find the maximum - maxOfTwoNumbers", function() { + it("Defines maxOfTwoNumbers", function() { + expect(typeof maxOfTwoNumbers).toBe("function"); }); - it('First parameter larger', function () { + it("First parameter larger", function() { expect(maxOfTwoNumbers(2, 1)).toBe(2); }); - it('Second parameter larger', function () { + it("Second parameter larger", function() { expect(maxOfTwoNumbers(1, 3)).toBe(3); }); - it('First and Second parameter equal', function () { + it("First and Second parameter equal", function() { expect(maxOfTwoNumbers(4, 4)).toBe(4); }); }); -describe('Finding Longest Word - findLongestWord', function () { - it('Defines findLongestWord', function () { - expect(typeof findLongestWord).toBe('function'); +describe("Finding Longest Word - findLongestWord", function() { + it("Defines findLongestWord", function() { + expect(typeof findLongestWord).toBe("function"); }); - it('returns undefined with an empty array', function () { + it("returns undefined with an empty array", function() { expect(findLongestWord([])).toBe(undefined); }); - it('returns the word with an 1-word array', function () { - expect(findLongestWord(['foo'])).toBe('foo'); + it("returns the word with an 1-word array", function() { + expect(findLongestWord(["foo"])).toBe("foo"); }); - it('returns the first occurrence word when longest have multiple occurrences ', function () { - expect(findLongestWord(['foo', 'bar'])).toBe('foo'); - expect(findLongestWord(['bar', 'foo'])).toBe('bar'); + it("returns the first occurrence word when longest have multiple occurrences ", function() { + expect(findLongestWord(["foo", "bar"])).toBe("foo"); + expect(findLongestWord(["bar", "foo"])).toBe("bar"); }); - it('returns the longest occurrence when it has multiple words', function () { - var words = ['a', 'zab', '12abc', '$$abcd', 'abcde', 'ironhack']; + it("returns the longest occurrence when it has multiple words", function() { + var words = ["a", "zab", "12abc", "$$abcd", "abcde", "ironhack"]; for (var i = 0; i < 10; i++) { words = shuffle(words); - expect(findLongestWord(words)).toBe('ironhack'); + expect(findLongestWord(words)).toBe("ironhack"); } }); }); -describe('Calculating a Sum - sumArray', function () { - it('Defines sumArray', function () { - expect(typeof sumArray).toBe('function'); +describe("Calculating a Sum - sumArray", function() { + it("Defines sumArray", function() { + expect(typeof sumArray).toBe("function"); }); - it('returns zero with an empty array', function () { + it("returns zero with an empty array", function() { expect(sumArray([])).toBe(0); }); - it('returns the sum with one number array', function () { + it("returns the sum with one number array", function() { expect(sumArray([4])).toBe(4); }); - it('returns zero if all elements are zero', function () { + it("returns zero if all elements are zero", function() { expect(sumArray([0, 0, 0, 0, 0])).toBe(0); }); - it('returns the sum', function () { + it("returns the sum", function() { expect(sumArray([10, 5, 4, 32, 8])).toBe(59); }); }); -describe('Calculating the Average - averageNumbers', function () { - it('Defines averageNumbers', function () { - expect(typeof averageNumbers).toBe('function'); +describe("Calculating the Average - averageNumbers", function() { + it("Defines averageNumbers", function() { + expect(typeof averageNumbers).toBe("function"); }); - it('returns undefined with an empty array', function () { + it("returns undefined with an empty array", function() { expect(averageNumbers([])).toBe(undefined); }); - it('returns the average of a unique element array', function () { + it("returns the average of a unique element array", function() { expect(averageNumbers([9])).toBe(9); }); - it('returns the average even with negative values', function () { + it("returns the average even with negative values", function() { expect(averageNumbers([9, -3, -4, 6])).toBe(2); }); - it('returns the average of the array', function () { + it("returns the average of the array", function() { expect(averageNumbers([9, 10, 82, 92, 32, 102, 58])).toBe(55); }); }); -describe('Calculating the Average - averageWordLength', function () { - it('Defines averageWordLength', function () { - expect(typeof averageWordLength).toBe('function'); +describe("Calculating the Average - averageWordLength", function() { + it("Defines averageWordLength", function() { + expect(typeof averageWordLength).toBe("function"); }); - it('returns undefined with an empty array', function () { + it("returns undefined with an empty array", function() { expect(averageWordLength([])).toBe(undefined); }); - it('returns the average of a unique element array', function () { - expect(averageWordLength(['ironhack'])).toBe(8); + it("returns the average of a unique element array", function() { + expect(averageWordLength(["ironhack"])).toBe(8); }); - it('returns the average of a the array', function () { - expect(averageWordLength(['Ironhack', 'Madrid', 'Barcelona', 'Paris', 'Miami', 'Mexico', 'Berlin', 'Programmers'])).toBe(7); + it("returns the average of a the array", function() { + expect( + averageWordLength([ + "Ironhack", + "Madrid", + "Barcelona", + "Paris", + "Miami", + "Mexico", + "Berlin", + "Programmers" + ]) + ).toBe(7); }); }); -describe('Unique Arrays - uniquifyArray', function () { - it('Defines uniquifyArray', function () { - expect(typeof uniquifyArray).toBe('function'); +describe("Unique Arrays - uniquifyArray", function() { + it("Defines uniquifyArray", function() { + expect(typeof uniquifyArray).toBe("function"); }); - it('returns undefined with an empty array', function () { + it("returns undefined with an empty array", function() { expect(uniquifyArray([])).toBe(undefined); }); - it('returns the correct array when having an array of the same element', function () { - expect(uniquifyArray(['Ironhack', 'Ironhack', 'Ironhack'])).toEqual(['Ironhack']); + it("returns the correct array when having an array of the same element", function() { + expect(uniquifyArray(["Ironhack", "Ironhack", "Ironhack"])).toEqual([ + "Ironhack" + ]); }); - it('returns the same array when no element is repeated', function () { - expect(uniquifyArray(['Cat', 'Dog', 'Cow'])).toEqual(['Cat', 'Dog', 'Cow']); + it("returns the same array when no element is repeated", function() { + expect(uniquifyArray(["Cat", "Dog", "Cow"])).toEqual(["Cat", "Dog", "Cow"]); }); - it('returns the uniquified array', function () { - expect(uniquifyArray(['iPhone', 'Samsung', 'Android', 'iOS', 'iPhone', 'Samsung', 'Nokia', 'Blackberry', 'Android'])).toEqual(['iPhone', 'Samsung', 'Android', 'iOS', 'Nokia', 'Blackberry']); + it("returns the uniquified array", function() { + expect( + uniquifyArray([ + "iPhone", + "Samsung", + "Android", + "iOS", + "iPhone", + "Samsung", + "Nokia", + "Blackberry", + "Android" + ]) + ).toEqual(["iPhone", "Samsung", "Android", "iOS", "Nokia", "Blackberry"]); }); }); -describe('Finding Elements - doesWordExist', function () { - it('Defines doesWordExist', function () { - expect(typeof doesWordExist).toBe('function'); +describe("Finding Elements - doesWordExist", function() { + it("Defines doesWordExist", function() { + expect(typeof doesWordExist).toBe("function"); }); - it('returns false with an empty array', function () { + it("returns false with an empty array", function() { expect(doesWordExist([])).toBe(false); }); - it('returns true if the word we are looking is the only one on the array', function () { - expect(doesWordExist(['machine'], 'machine')).toBe(true); + it("returns true if the word we are looking is the only one on the array", function() { + expect(doesWordExist(["machine"], "machine")).toBe(true); }); - it('returns false if the word we are looking is not in the array', function () { - expect(doesWordExist(['machine', 'poison', 'eat', 'apple', 'horse'], 'ratatouille')).toBe(false); + it("returns false if the word we are looking is not in the array", function() { + expect( + doesWordExist( + ["machine", "poison", "eat", "apple", "horse"], + "ratatouille" + ) + ).toBe(false); }); - it('returns true if the word we are looking is in the array', function () { - expect(doesWordExist(['pizza', 'sandwich', 'snack', 'soda', 'book', 'computer'], 'book')).toBe(true); + it("returns true if the word we are looking is in the array", function() { + expect( + doesWordExist( + ["pizza", "sandwich", "snack", "soda", "book", "computer"], + "book" + ) + ).toBe(true); }); }); -describe('Counting Repetition - howManyTimes', function () { - it('Defines howManyTimes', function () { - expect(typeof howManyTimes).toBe('function'); +describe("Counting Repetition - howManyTimes", function() { + it("Defines howManyTimes", function() { + expect(typeof howManyTimes).toBe("function"); }); - it('returns false with an empty array', function () { + it("returns false with an empty array", function() { expect(howManyTimes([])).toBe(false); }); - it('returns one when the word appears only one time on the array', function () { - expect(howManyTimes(['basketball', 'football', 'tennis'], 'tennis')).toBe(1); - }); - - it('returns zero when the word does not appears on the array', function () { - expect(howManyTimes(['basketball', 'football', 'tennis'], 'rugby')).toBe(0); - }); - - it('returns five when the word appears 5 times on the array', function () { - expect(howManyTimes(['basketball', 'football', 'tennis', 'rugby', 'rugby', 'ping pong', 'rugby', 'basketball', 'rugby', 'handball', 'rugby'], 'rugby')).toBe(5); + it("returns one when the word appears only one time on the array", function() { + expect(howManyTimes(["basketball", "football", "tennis"], "tennis")).toBe( + 1 + ); + }); + + it("returns zero when the word does not appears on the array", function() { + expect(howManyTimes(["basketball", "football", "tennis"], "rugby")).toBe(0); + }); + + it("returns five when the word appears 5 times on the array", function() { + expect( + howManyTimes( + [ + "basketball", + "football", + "tennis", + "rugby", + "rugby", + "ping pong", + "rugby", + "basketball", + "rugby", + "handball", + "rugby" + ], + "rugby" + ) + ).toBe(5); }); }); -describe('Bonus Quest - greatestProduct', function () { - it('Defines greatestProduct', function () { - expect(typeof greatestProduct).toBe('function'); +describe("Bonus Quest - greatestProduct", function() { + it("Defines greatestProduct", function() { + expect(typeof greatestProduct).toBe("function"); }); - it('Return 1 when all the numbers of the arrays are 1', function () { + it("Return 1 when all the numbers of the arrays are 1", function() { var matrix = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], @@ -217,7 +271,7 @@ describe('Bonus Quest - greatestProduct', function () { expect(greatestProduct(matrix)).toBe(1); }); - it('Return 16 when all the numbers of the arrays are 2', function () { + it("Return 16 when all the numbers of the arrays are 2", function() { var matrix = [ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], @@ -243,4 +297,3 @@ describe('Bonus Quest - greatestProduct', function () { expect(greatestProduct(matrix)).toBe(16); }); }); -