From b98264b13b59a7b6e535de85b3ee358788198ab1 Mon Sep 17 00:00:00 2001 From: u1986f Date: Sat, 4 Mar 2023 10:14:23 +0000 Subject: [PATCH 1/4] updated numbers - finished numbers track --- .package.json.swo | Bin 0 -> 12288 bytes .package.json.swp | Bin 0 -> 12288 bytes src/__tests__/numbers.test.js | 22 ++++++++--------- src/__tests__/strings.test.js | 18 +++++++------- src/numbers.js | 44 +++++++++++++++++----------------- 5 files changed, 42 insertions(+), 42 deletions(-) create mode 100644 .package.json.swo create mode 100644 .package.json.swp diff --git a/.package.json.swo b/.package.json.swo new file mode 100644 index 0000000000000000000000000000000000000000..37fec135cae29236541c13dcd64d0669031537a1 GIT binary patch literal 12288 zcmeI2L2DE-6o6B2f>qIr-lkI!q|VIlR%o%v>TC9M${Ckc7R zciGaz7bE#uLTITA>hJ$$%=&dUX;OAwsnujwn6y-kmc!c~hk%(js>7MHS%1S;;j2C#k42|XEgm==ZbSoU01co4 zG=K)s02)98XyEV}aC(G1fwYfQsgG6Hk)dn#5ie)}4WI!ufCkV28bAYR01co4G=K)s zz#%k1TZEiHM#v7}|NsB_`+xTYA>V)n!~?gMv$tH1 z0Ox=);Oi(MZ-AG;Q{Wy@2aW>Y;p{KKXW$d?9`O0R1Kt8S&;S}h184vZpaC?12G9T+ zKm&sYr0zyST1U&0kS!9yh_&I)32x$9i5|Cpz3Ze{;EUIjyBr@rC|vZc8Cu zqRU=e$mI9k%abVt*ngeqYGtZ${X+)BF(p?-dobKodNHjHg{#(4VRD)KmS`SQti#IT zwP9i^y;P+XxA@u(uDNV+$pp7By$Kb?h3aw*4b^^m;heTJS=JV==;bL>-K;rxo2eGx zrxSbJaN6qfklTke%aUlsq_?9Rd0#g&_SKQ z<4=zb*UAc~%my4640oxJ-ikFW6QF+`de;Z6x#~^xZ(NilYuw}t3ir|az3+QYpwLj3 zP$A;Yb#9oj+(t~nE+N}d=#r0q34j^NxOV*$V_0RY&5gZRCYBVQBV_nTw>_k}Nqztg Clr^^i literal 0 HcmV?d00001 diff --git a/.package.json.swp b/.package.json.swp new file mode 100644 index 0000000000000000000000000000000000000000..25bafeb6a5ede9f93bc7b9630ad6f8d61a34384a GIT binary patch literal 12288 zcmeI2F>ll`6vtggL;=A9TW|*kn&j>ZN815WHinKxpsE#)<6eBt#g^@q7E}-eLq7^g z@D-R?SdgGFAO^kzJMip;mYymB9gr%$NPk7KpWplYXWvluWt}^>7o)kPL*O|}$TRVs zFW-ML(Z4_lD|NyA_#d7HA7|r5#&0RL9xq6fl!~)*eA(lWFx5s41$Q zvy$6XGrrCSA{km$jjzUUB!C2tOrUma@$BT%Os^Y$>QnSmbpG7Zk<;NqB!C2v01`j~ zNB{{S0VIF~jvoQ1C&&}9eWJBa+xNuSyZyu$50#ilS^T48|!tdi9r m3T^VyJ^+}hxX`YtNFmC$i+g)lhE@#D5ghI>YuoL?Ciw~Fyffec literal 0 HcmV?d00001 diff --git a/src/__tests__/numbers.test.js b/src/__tests__/numbers.test.js index 253de15f..d610b3b3 100644 --- a/src/__tests__/numbers.test.js +++ b/src/__tests__/numbers.test.js @@ -13,7 +13,7 @@ const { } = require('../numbers'); describe('add', () => { - xit('adds the two numbers together', () => { + it('adds the two numbers together', () => { expect(add(2, 1)).toEqual(3); expect(add(15, 76)).toEqual(91); expect(add(12, 0)).toEqual(12); @@ -22,7 +22,7 @@ describe('add', () => { }); describe('subtract', () => { - xit('subtracts the second number from the first', () => { + it('subtracts the second number from the first', () => { expect(subtract(2, 1)).toEqual(1); expect(subtract(1, 2)).toEqual(-1); expect(subtract(-2, 1)).toEqual(-3); @@ -32,7 +32,7 @@ describe('subtract', () => { }); describe('multiply', () => { - xit('multiplies the two numbers together', () => { + it('multiplies the two numbers together', () => { expect(multiply(10, 3)).toEqual(30); expect(multiply(-11, 5)).toEqual(-55); expect(multiply(-4, -9)).toEqual(36); @@ -40,7 +40,7 @@ describe('multiply', () => { }); describe('divide', () => { - xit('divides the first number by the second number', () => { + it('divides the first number by the second number', () => { expect(divide(20, 5)).toEqual(4); expect(divide(5, 2)).toEqual(2.5); expect(divide(2, 5)).toEqual(0.4); @@ -49,7 +49,7 @@ describe('divide', () => { }); describe('power', () => { - xit('returns the first number to the power of the second', () => { + it('returns the first number to the power of the second', () => { expect(power(5, 2)).toEqual(25); expect(power(2, 3)).toEqual(8); expect(power(10, 5)).toEqual(100000); @@ -57,7 +57,7 @@ describe('power', () => { }); describe('round', () => { - xit('rounds the number to the nearest integer', () => { + it('rounds the number to the nearest integer', () => { expect(round(2.1)).toEqual(2); expect(round(9.7)).toEqual(10); expect(round(5.5)).toEqual(6); @@ -65,7 +65,7 @@ describe('round', () => { }); describe('roundUp', () => { - xit('rounds the number up to the nearest integer', () => { + it('rounds the number up to the nearest integer', () => { expect(roundUp(2.1)).toEqual(3); expect(roundUp(9.7)).toEqual(10); expect(roundUp(5.5)).toEqual(6); @@ -73,7 +73,7 @@ describe('roundUp', () => { }); describe('roundDown', () => { - xit('rounds the number down to the nearest integer', () => { + it('rounds the number down to the nearest integer', () => { expect(roundDown(2.1)).toEqual(2); expect(roundDown(9.7)).toEqual(9); expect(roundDown(5.5)).toEqual(5); @@ -81,7 +81,7 @@ describe('roundDown', () => { }); describe('absolute', () => { - xit('returns the absolute value of the number', () => { + it('returns the absolute value of the number', () => { expect(absolute(-1)).toEqual(1); expect(absolute(1)).toEqual(1); expect(absolute(0)).toEqual(0); @@ -93,7 +93,7 @@ describe('quotient', () => { // the first by the second, without the remainder // 18 divided by 7 is 2 remainder 4 (or 2.571...) // so the quotient of 18 and 7 is 2 - xit('returns the quotient from dividing the first number by the second number', () => { + it('returns the quotient from dividing the first number by the second number', () => { expect(quotient(10, 3)).toEqual(3); expect(quotient(18, 7)).toEqual(2); expect(quotient(77, 10)).toEqual(7); @@ -102,7 +102,7 @@ describe('quotient', () => { }); describe('remainder', () => { - xit('returns the remainder when dividing the first number by the second number', () => { + it('returns the remainder when dividing the first number by the second number', () => { expect(remainder(10, 3)).toEqual(1); expect(remainder(18, 7)).toEqual(4); expect(remainder(77, 10)).toEqual(7); diff --git a/src/__tests__/strings.test.js b/src/__tests__/strings.test.js index e2c3c887..b19fd739 100644 --- a/src/__tests__/strings.test.js +++ b/src/__tests__/strings.test.js @@ -8,21 +8,21 @@ const { } = require('../strings'); describe('sayHello', () => { - xit('returns "Hello world!" when passed "world"', () => { + it('returns "Hello world!" when passed "world"', () => { expect(sayHello('world')).toEqual('Hello, world!'); }); - xit('returns "Hello MCR Codes!" when passed "MCR Codes"', () => { + it('returns "Hello MCR Codes!" when passed "MCR Codes"', () => { expect(sayHello('MCR Codes')).toEqual('Hello, MCR Codes!'); }); - xit('returns "Hello fsghjdfkhgf!" when passed "fsghjdfkhgf"', () => { + it('returns "Hello fsghjdfkhgf!" when passed "fsghjdfkhgf"', () => { expect(sayHello('fsghjdfkhgf')).toEqual('Hello, fsghjdfkhgf!'); }); }); describe('uppercase', () => { - xit('returns the uppercased string', () => { + it('returns the uppercased string', () => { expect(uppercase('abc')).toEqual('ABC'); expect(uppercase('def')).toEqual('DEF'); expect(uppercase('ghi')).toEqual('GHI'); @@ -30,7 +30,7 @@ describe('uppercase', () => { }); describe('lowercase', () => { - xit('returns the lowercased string', () => { + it('returns the lowercased string', () => { expect(lowercase('ABC')).toEqual('abc'); expect(lowercase('DEF')).toEqual('def'); expect(lowercase('GHI')).toEqual('ghi'); @@ -38,7 +38,7 @@ describe('lowercase', () => { }); describe('countCharacters', () => { - xit('returns the number of characters in the string', () => { + it('returns the number of characters in the string', () => { expect(countCharacters('fsfsgsfdg')).toEqual(9); expect(countCharacters('fsfsg')).toEqual(5); expect(countCharacters('')).toEqual(0); @@ -46,7 +46,7 @@ describe('countCharacters', () => { }); describe('firstCharacter', () => { - xit('returns the first character of the string', () => { + it('returns the first character of the string', () => { expect(firstCharacter('ABC')).toEqual('A'); expect(firstCharacter('DEF')).toEqual('D'); expect(firstCharacter('GHI')).toEqual('G'); @@ -54,11 +54,11 @@ describe('firstCharacter', () => { }); describe('firstCharacters', () => { - xit('returns the first 4 characters of the string', () => { + it('returns the first 4 characters of the string', () => { expect(firstCharacters('sd32fg45', 4)).toEqual('sd32'); }); - xit('returns the first 2 characters of the string', () => { + it('returns the first 2 characters of the string', () => { expect(firstCharacters('asd', 2)).toEqual('as'); }); }); diff --git a/src/numbers.js b/src/numbers.js index d3eab646..20e24732 100644 --- a/src/numbers.js +++ b/src/numbers.js @@ -1,45 +1,45 @@ -function add (a, b) { - // your code here +const add = (a, b) => { + return a + b; } -function subtract (a, b) { - // your code here +const subtract = (a, b) => { + return a - b; } -function multiply (a, b) { - // your code here +const multiply = (a, b) => { + return a * b; } -function divide (a, b) { - // your code here +const divide = (a, b) => { + return a / b; } -function power (a, b) { - // your code here +const power = (a, b) => { + return a ** b; } -function round (a) { - // your code here +const round = (a) => { + return Math.round(a); } -function roundUp (a) { - // your code here +const roundUp = (a) => { + return Math.ceil(a); } -function roundDown (a) { - // your code here +const roundDown = (a) => { + return Math.floor(a); } -function absolute (a) { - // your code here +const absolute = (a) => { + return Math.abs(a); } -function quotient (a, b) { - // your code here +const quotient = (a, b) => { + return Math.trunc(a / b); } -function remainder (a, b) { - // your code here +const remainder = (a, b) => { + return a % b; } module.exports = { From 30d9dc31a2efb2f849cdc287c6fbaed5fb74c1f2 Mon Sep 17 00:00:00 2001 From: u1986f Date: Sun, 5 Mar 2023 13:11:16 +0000 Subject: [PATCH 2/4] updating strings --- src/strings.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/strings.js b/src/strings.js index ce02affa..151b1a7f 100644 --- a/src/strings.js +++ b/src/strings.js @@ -1,25 +1,25 @@ -function sayHello (string) { - // your code here +const sayHello = (string) => { + return 'Hello, ' + string + '!'; }; -function uppercase (string) { - // your code here +const uppercase = (string) => { + return string.toUpperCase(); }; -function lowercase (string) { - // your code here +const lowercase = (string) => { + return string.toLowerCase(); }; -function countCharacters (string) { - // your code here +const countCharacters = (string) => { + return string.length; }; -function firstCharacter (string) { - // your code here +const firstCharacter = (string) => { + return string.charAt(0); }; -function firstCharacters (string, n) { - // your code here +const firstCharacters = (string, n) => { + return string.slice(0, n); }; module.exports = { From eff78c84d170fbdc6cdbd6da66ee9079c455546a Mon Sep 17 00:00:00 2001 From: u1986f Date: Thu, 9 Mar 2023 13:04:25 +0000 Subject: [PATCH 3/4] updated booleans and arrays --- src/__tests__/arrays.test.js | 34 ++++++++++----------- src/__tests__/booleans.test.js | 32 +++++++++---------- src/arrays.js | 56 +++++++++++++++++++++++----------- src/booleans.js | 32 ++++++++++--------- 4 files changed, 89 insertions(+), 65 deletions(-) diff --git a/src/__tests__/arrays.test.js b/src/__tests__/arrays.test.js index d00a5566..319dd620 100644 --- a/src/__tests__/arrays.test.js +++ b/src/__tests__/arrays.test.js @@ -19,34 +19,34 @@ const { describe('getNthElement', () => { const array = ['cat', 'dog', 'elephant', 'fox']; - xit('returns the element at the given position', () => { + it('returns the element at the given position', () => { expect(getNthElement(0, array)).toEqual('cat'); expect(getNthElement(2, array)).toEqual('elephant'); expect(getNthElement(3, array)).toEqual('fox'); }); - xit('if n is greater than the number of elements, it cycles back to the start', () => { + it('if n is greater than the number of elements, it cycles back to the start', () => { expect(getNthElement(4, array)).toEqual('cat'); expect(getNthElement(5, array)).toEqual('dog'); }); }); describe('arrayToCSVString', () => { - xit('returns the array elements as a comma-seperated string', () => { + it('returns the array elements as a comma-seperated string', () => { expect(arrayToCSVString(['a', 'b', 'c', 'd'])).toEqual('a,b,c,d'); expect(arrayToCSVString([1, 2, 3, 4, 5])).toEqual('1,2,3,4,5'); }); }); describe('csvStringToArray', () => { - xit('converts the csv string as an array', () => { + it('converts the csv string as an array', () => { expect(csvStringToArray('a,b,c,d')).toEqual(['a', 'b', 'c', 'd']); expect(csvStringToArray('1,2,3,4,5')).toEqual(['1', '2', '3', '4', '5']); }); }); describe('addToArray', () => { - xit('adds the item to the end of the array', () => { + it('adds the item to the end of the array', () => { const array = []; const array2 = [1, 2, 3]; @@ -59,7 +59,7 @@ describe('addToArray', () => { }); describe('addToArray2', () => { - xit('returns a new array with the value appended', () => { + it('returns a new array with the value appended', () => { const array = ['a', 'b', 'c']; const array2 = [1, 2, 3]; @@ -72,7 +72,7 @@ describe('addToArray2', () => { }); describe('removeNthElement', () => { - xit('removes the element at position n', () => { + it('removes the element at position n', () => { const array = ['ant', 'bison', 'cockerel', 'duck', 'elephant']; removeNthElement(2, array); expect(array).toEqual(['ant', 'bison', 'duck', 'elephant']); @@ -84,14 +84,14 @@ describe('removeNthElement', () => { }); describe('numbersToStrings', () => { - xit('converts every number in the array to a string', () => { + it('converts every number in the array to a string', () => { expect(numbersToStrings([1, 2, 3])).toEqual(['1', '2', '3']); expect(numbersToStrings([7, 8, 9])).toEqual(['7', '8', '9']); }); }); describe('uppercaseWordsInArray', () => { - xit('makes every string in the array uppercase', () => { + it('makes every string in the array uppercase', () => { expect(uppercaseWordsInArray(['cat', 'mouse', 'banana'])).toEqual([ 'CAT', 'MOUSE', @@ -106,7 +106,7 @@ describe('uppercaseWordsInArray', () => { }); describe('reverseWordsInArray', () => { - xit('reverses every string in an array', () => { + it('reverses every string in an array', () => { expect(reverseWordsInArray(['cat', 'Mouse', 'banana'])).toEqual([ 'tac', 'esuoM', @@ -121,14 +121,14 @@ describe('reverseWordsInArray', () => { }); describe('onlyEven', () => { - xit('filters the array and only returns even numbers', () => { + it('filters the array and only returns even numbers', () => { expect(onlyEven([1, 2, 3, 4, 5, 6, 7, 8])).toEqual([2, 4, 6, 8]); expect(onlyEven([8, 9, 10, 11, 12, 13, 14, 15])).toEqual([8, 10, 12, 14]); }); }); describe('removeNthElement2', () => { - xit('returns an array with the nth element removed, and does not mutate the original', () => { + it('returns an array with the nth element removed, and does not mutate the original', () => { const array = ['bike', 'car', 'train', 'bus']; expect(removeNthElement2(2, array)).toEqual(['bike', 'car', 'bus']); expect(array).toEqual(['bike', 'car', 'train', 'bus']); @@ -139,7 +139,7 @@ describe('removeNthElement2', () => { }); describe('elementsStartingWithAVowel', () => { - xit('returns elements starting with a vowel', () => { + it('returns elements starting with a vowel', () => { expect( elementsStartingWithAVowel([ 'apple', @@ -179,7 +179,7 @@ describe('elementsStartingWithAVowel', () => { ).toEqual(['aaaa', 'eeee']); }); - xit('is case insensitive', () => { + it('is case insensitive', () => { expect( elementsStartingWithAVowel([ 'Apple', @@ -221,7 +221,7 @@ describe('elementsStartingWithAVowel', () => { }); describe('removeSpaces', () => { - xit('returns the string with the space characters removed', () => { + it('returns the string with the space characters removed', () => { expect(removeSpaces('this string has spaces')).toEqual( 'thisstringhasspaces' ); @@ -232,14 +232,14 @@ describe('removeSpaces', () => { }); describe('sumNumbers', () => { - xit('returns the sum of the numbers in the array', () => { + it('returns the sum of the numbers in the array', () => { expect(sumNumbers([1, 3, 5, 6, 2, 8])).toEqual(25); expect(sumNumbers([1, 3, 5])).toEqual(9); }); }); describe('sortByLastLetter', () => { - xit('sorts the string by the last character', () => { + it('sorts the string by the last character', () => { expect( sortByLastLetter(['Lannister', 'Stark', 'Greyjoy', 'Targaryen']) ).toEqual(['Stark', 'Targaryen', 'Lannister', 'Greyjoy']); diff --git a/src/__tests__/booleans.test.js b/src/__tests__/booleans.test.js index 734201d5..1b70b8a1 100644 --- a/src/__tests__/booleans.test.js +++ b/src/__tests__/booleans.test.js @@ -17,14 +17,14 @@ const { } = require('../booleans'); describe('negate', () => { - xit('returns the opposite of the passed boolean value', () => { + it('returns the opposite of the passed boolean value', () => { expect(negate(true)).toBe(false); expect(negate(false)).toBe(true); }); }); describe('both', () => { - xit('returns true if both of the given booleans are true', () => { + it('returns true if both of the given booleans are true', () => { expect(both(true, true)).toBe(true); expect(both(true, false)).toBe(false); expect(both(false, true)).toBe(false); @@ -33,7 +33,7 @@ describe('both', () => { }); describe('either', () => { - xit('returns true if at least one of the given booleans are true', () => { + it('returns true if at least one of the given booleans are true', () => { expect(either(true, true)).toBe(true); expect(either(true, false)).toBe(true); expect(either(false, true)).toBe(true); @@ -42,7 +42,7 @@ describe('either', () => { }); describe('none', () => { - xit('returns true if neither of the given booleans are true', () => { + it('returns true if neither of the given booleans are true', () => { expect(none(true, true)).toBe(false); expect(none(true, false)).toBe(false); expect(none(false, true)).toBe(false); @@ -51,7 +51,7 @@ describe('none', () => { }); describe('one', () => { - xit('returns true if exactly one of the given booleans are true', () => { + it('returns true if exactly one of the given booleans are true', () => { expect(one(true, true)).toBe(false); expect(one(true, false)).toBe(true); expect(one(false, true)).toBe(true); @@ -60,7 +60,7 @@ describe('one', () => { }); describe('truthiness', () => { - xit('returns the truthiness of the given value', () => { + it('returns the truthiness of the given value', () => { expect(truthiness('')).toBe(false); expect(truthiness('dbbd')).toBe(true); expect(truthiness(0)).toBe(false); @@ -74,7 +74,7 @@ describe('truthiness', () => { }); describe('isEqual', () => { - xit('returns whether the two values are equal', () => { + it('returns whether the two values are equal', () => { expect(isEqual(true, false)).toBe(false); expect(isEqual(true, true)).toBe(true); expect(isEqual('true', 'true')).toBe(true); @@ -86,7 +86,7 @@ describe('isEqual', () => { }); describe('isGreaterThan', () => { - xit('returns true if the first number is strictly greater than the second', () => { + it('returns true if the first number is strictly greater than the second', () => { expect(isGreaterThan(1, 2)).toBe(false); expect(isGreaterThan(3, 2)).toBe(true); expect(isGreaterThan(4, 4)).toBe(false); @@ -98,7 +98,7 @@ describe('isGreaterThan', () => { }); describe('isLessThanOrEqualTo', () => { - xit('returns true if the first number is less than or equal to the second', () => { + it('returns true if the first number is less than or equal to the second', () => { expect(isLessThanOrEqualTo(1, 2)).toBe(true); expect(isLessThanOrEqualTo(3, 2)).toBe(false); expect(isLessThanOrEqualTo(4, 4)).toBe(true); @@ -108,7 +108,7 @@ describe('isLessThanOrEqualTo', () => { }); describe('isOdd', () => { - xit('returns whether the number is odd', () => { + it('returns whether the number is odd', () => { expect(isOdd(5)).toBe(true); expect(isOdd(6)).toBe(false); expect(isOdd(7)).toBe(true); @@ -117,7 +117,7 @@ describe('isOdd', () => { }); describe('isEven', () => { - xit('returns whether the number is even', () => { + it('returns whether the number is even', () => { expect(isEven(5)).toBe(false); expect(isEven(6)).toBe(true); expect(isEven(7)).toBe(false); @@ -126,7 +126,7 @@ describe('isEven', () => { }); describe('isSquare', () => { - xit('returns true if the number is a square', () => { + it('returns true if the number is a square', () => { expect(isSquare(9)).toEqual(true); expect(isSquare(4)).toEqual(true); expect(isSquare(5)).toEqual(false); @@ -136,7 +136,7 @@ describe('isSquare', () => { }); describe('startsWith', () => { - xit('returns whether the given string starts with the given character', () => { + it('returns whether the given string starts with the given character', () => { expect(startsWith('a', 'aardvark')).toBe(true); expect(startsWith('c', 'aardvark')).toBe(false); expect(startsWith('b', 'baardvark')).toBe(true); @@ -146,7 +146,7 @@ describe('startsWith', () => { }); describe('containsVowels', () => { - xit('returns whether the given string contains vowels', () => { + it('returns whether the given string contains vowels', () => { expect(containsVowels('cat')).toBe(true); expect(containsVowels('DOG')).toBe(true); expect(containsVowels('why')).toBe(false); @@ -154,9 +154,9 @@ describe('containsVowels', () => { }); describe('isLowerCase', () => { - xit('it returns true if the given string is lowercase', () => { + it('it returns true if the given string is lowercase', () => { expect(isLowerCase('abc')).toBe(true); expect(isLowerCase('abc213')).toBe(true); expect(isLowerCase('Abc')).toBe(false); }); -}); +}); \ No newline at end of file diff --git a/src/arrays.js b/src/arrays.js index 822c49b7..52cd8a95 100644 --- a/src/arrays.js +++ b/src/arrays.js @@ -1,61 +1,83 @@ const getNthElement = (index, array) => { - // your code here + index %= array.length; + return array[index]; }; const arrayToCSVString = array => { - // your code here + return array.join(); }; const csvStringToArray = string => { - // your code here + return string.split(','); }; -const addToArray = (element, array) => { - // your code here -}; +function addToArray(element, array) { + array.push(element); +} const addToArray2 = (element, array) => { - // your code here + const newArray = [...array, element]; + return newArray; }; const removeNthElement = (index, array) => { - // your code here + return array.splice(index, 1); }; const numbersToStrings = numbers => { - // your code here + return numbers.map(String); }; const uppercaseWordsInArray = strings => { - // your code here + return strings + .join() + .toUpperCase() + .split(','); }; const reverseWordsInArray = strings => { - // your code here + return strings + .toString() + .split('') + .reverse() + .join('') + .split(',') + .reverse(); }; const onlyEven = numbers => { - // your code here + function even(n) { + return !(n % 2); + } + return numbers.filter(even); }; const removeNthElement2 = (index, array) => { - // your code here + const firstArray = array.slice(0, index); + const secondArray = array.slice(index + 1, array[-1]); + return firstArray.concat(secondArray); }; const elementsStartingWithAVowel = strings => { - // your code here + const vowelWords = strings.filter(word => /^[aeiou]/i.test(word)) + return vowelWords; }; const removeSpaces = string => { - // your code here + return string.split(' ').join(''); }; const sumNumbers = numbers => { - // your code here + return numbers.reduce((acc, curr) => acc + curr, 0); }; const sortByLastLetter = strings => { - // your code here + function comparingLastLetter(a, b) { + if (a.slice(-1) < b.slice(-1)) return -1; + if (a.slice(-1) > b.slice(-1)) return 1; + return 0; + } + return strings.sort(comparingLastLetter); }; module.exports = { diff --git a/src/booleans.js b/src/booleans.js index 5ff6cb55..df6614c1 100644 --- a/src/booleans.js +++ b/src/booleans.js @@ -1,61 +1,63 @@ function negate(a) { - // your code here + return !a; }; function both(a, b) { - // your code here + return a && b; }; function either(a, b) { - // your code here + return a || b; }; function none(a, b) { - // your code here + return !(a || b); }; function one(a, b) { - // your code here + return (a || b) && !(a && b); }; function truthiness(a) { - // your code here + return Boolean(a); }; function isEqual(a, b) { - // your code here + return a === b; }; function isGreaterThan(a, b) { - // your code here + return a > b; }; function isLessThanOrEqualTo(a, b) { - // your code here + return a <= b; }; function isOdd(a) { - // your code here + return Boolean(a % 2); }; function isEven(a) { - // your code here + return !(Boolean(a % 2)); }; function isSquare(a) { - // your code here + const squareRoot = Math.sqrt(a); + const isPerfectSquare = Math.ceil(squareRoot) === Math.floor(squareRoot); + return isPerfectSquare; }; function startsWith(char, string) { - // your code here + return string.startsWith(char); }; function containsVowels(string) { - // your code here + return /[aeiou]/i.test(string); }; function isLowerCase(string) { - // your code here + return string === string.toLowerCase(); }; module.exports = { From 6b34bdb4ff2e8e9716a325fdf09f2cb1789670af Mon Sep 17 00:00:00 2001 From: u1986f Date: Fri, 10 Mar 2023 12:13:11 +0000 Subject: [PATCH 4/4] committing object files to the repository --- src/__tests__/objects.test.js | 20 ++++++++--------- src/objects.js | 42 ++++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/src/__tests__/objects.test.js b/src/__tests__/objects.test.js index 77abc373..1755397f 100644 --- a/src/__tests__/objects.test.js +++ b/src/__tests__/objects.test.js @@ -12,7 +12,7 @@ const { } = require('../objects'); describe('createPerson', () => { - xit('creates an object with the given name and age properties', () => { + it('creates an object with the given name and age properties', () => { expect(createPerson('Fred', 79)).toEqual({ name: 'Fred', age: 79 @@ -26,7 +26,7 @@ describe('createPerson', () => { }); describe('getName', () => { - xit('returns the name property of the object', () => { + it('returns the name property of the object', () => { expect( getName({ name: 'Fred', @@ -43,7 +43,7 @@ describe('getName', () => { }); describe('getProperty', () => { - xit('returns the given property', () => { + it('returns the given property', () => { expect( getProperty('age', { name: 'Fred', @@ -70,7 +70,7 @@ describe('hasProperty', () => { age: 23 }; - xit('returns true if the object has the given property', () => { + it('returns true if the object has the given property', () => { expect(hasProperty('age', fred)).toBe(true); expect(hasProperty('name', tom)).toBe(true); expect(hasProperty('favouriteColour', fred)).toBe(false); @@ -79,7 +79,7 @@ describe('hasProperty', () => { }); describe('isOver65', () => { - xit('returns true if the person is aged over 65', () => { + it('returns true if the person is aged over 65', () => { const jim = { name: 'Jim', age: 66 @@ -102,7 +102,7 @@ describe('isOver65', () => { }); describe('getAges', () => { - xit('returns the ages of each person in the array', () => { + it('returns the ages of each person in the array', () => { const jim = { name: 'Jim', age: 66 @@ -125,7 +125,7 @@ describe('getAges', () => { }); describe('findByName', () => { - xit('returns the person with the given name', () => { + it('returns the person with the given name', () => { const jim = { name: 'Jim', age: 66 @@ -147,7 +147,7 @@ describe('findByName', () => { }); describe('findHondas', () => { - xit('returns a list of cars manufactured by Honda', () => { + it('returns a list of cars manufactured by Honda', () => { const car1 = { manufacturer: 'Honda', year: 1997, @@ -179,7 +179,7 @@ describe('findHondas', () => { }); describe('averageAge', () => { - xit('returns the average age of the people in the list', () => { + it('returns the average age of the people in the list', () => { const john = { name: 'John', age: 60 @@ -207,7 +207,7 @@ describe('averageAge', () => { }); describe('createTalkingPerson', () => { - xit('returns a person who can introduce themselves', () => { + it('returns a person who can introduce themselves', () => { const bill = createTalkingPerson('Bill', 40); const catherine = createTalkingPerson('Catherine', 21); expect(bill).toEqual({ diff --git a/src/objects.js b/src/objects.js index 906eef8f..e22fc6b2 100644 --- a/src/objects.js +++ b/src/objects.js @@ -1,41 +1,63 @@ const createPerson = (name, age) => { - // your code here + const person = { + name, + age + }; + return person; }; const getName = object => { - // your code here + return object.name; }; const getProperty = (property, object) => { - // your code here + return object[property]; }; const hasProperty = (property, object) => { - // your code here + return object.hasOwnProperty(property); }; const isOver65 = person => { - // your code here + return person.age > 65; }; const getAges = people => { - // your code here + const ages = []; + for (let i = 0; i < people.length; i++) { + ages.push(people[i].age); + } + return ages; }; const findByName = (name, people) => { - // your code here + const foundName = people.find(person => person.name === name); + return foundName; }; const findHondas = cars => { - // your code here + const findHonda = cars.filter(car => car.manufacturer === 'Honda'); + return findHonda; }; const averageAge = people => { - // your code here + const ages = []; + for (let i = 0; i < people.length; i++) { + ages.push(people[i].age); + } + const totalAge = ages.reduce((acc, curr) => acc + curr, 0); + return totalAge / people.length; }; const createTalkingPerson = (name, age) => { - // your code here + const person = { + name, + age, + introduce(introduceTo) { + return `Hi ${introduceTo}, my name is ${this.name} and I am ${this.age}!`; + } + }; + return person; }; module.exports = {