Conversation
| const array = ['cat', 'dog', 'elephant', 'fox']; | ||
| const getNthElement = (index, array) => { | ||
| // your code here | ||
| return array[index % array.length]; |
|
|
||
| const addToArray = (element, array) => { | ||
| // your code here | ||
| console.log(array.push(element)); |
There was a problem hiding this comment.
It is good practice to remove console.log() s from your code once you are finished. This is because you usually don't want to display data to users in the console from within your application/programme where possible. It could be sensitive information and it might also create a lot of noise in case there are other important messages or errors in the console.
There was a problem hiding this comment.
Just writing array.push(element) here would be great
|
|
||
| const numbersToStrings = numbers => { | ||
| // your code here | ||
| return numbers.map(String); |
There was a problem hiding this comment.
This is really clever. +1
|
|
||
| const onlyEven = numbers => { | ||
| // your code here | ||
| return numbers.filter(x => x % 2 === 0); |
There was a problem hiding this comment.
This works perfectly, the only suggestion I would have is usually we like to describe what a parameter is through it's naming, so instead of x here, I would probably write number or num. Just because it is slightly more descriptive, as the letter x could represent anything.
| const removeNthElement2 = (index, array) => { | ||
| // your code here | ||
| }; | ||
| const newArray = [...array]; |
There was a problem hiding this comment.
Nice use of the spread operator. This is a really important and commonly used operator.
| const elementsStartingWithAVowel = strings => { | ||
| // your code here | ||
| }; | ||
| return strings.filter(string => (string.match(/^[aeiou]/gi))); |
There was a problem hiding this comment.
You have one extra set of brackets her that I don't think you need. return strings.filter(string => string.match(/^[aeiou]/gi));
|
|
||
| const removeSpaces = string => { | ||
| // your code here | ||
| return string.replace(/\s+/g, ''); |
There was a problem hiding this comment.
nice use of replace
|
|
||
| const sumNumbers = numbers => { | ||
| // your code here | ||
| return numbers.reduce((total, current) => total + current, 0) |
There was a problem hiding this comment.
nice use of reduce
|
|
||
| const sortByLastLetter = strings => { | ||
| // your code here | ||
| return strings.sort((x, y) => x.charCodeAt(x.length - 1) - y.charCodeAt(y.length - 1)); |
There was a problem hiding this comment.
nice use of character codes
| function negate(a) { | ||
| // your code here | ||
| }; | ||
| const negate = (a) => !a; |
There was a problem hiding this comment.
Woo! Implicit returning :)
| // your code here | ||
| }; | ||
| const both = (a, b) => { | ||
| if (!a || !b) { |
There was a problem hiding this comment.
You could use return Boolean(a || b) or return !!(a || b) here if you wanted to get rid of the if else statement.
| }; | ||
| const either = (a, b) => { | ||
| if (a || b) { | ||
| return true; |
There was a problem hiding this comment.
Same refactor here
| return false; | ||
| } | ||
| const none = (a, b) => { | ||
| if (a || b) { |
There was a problem hiding this comment.
I like this because it is a slightly different solution to what I expected, but it still works. I would use return !a && !b here.
| }; | ||
| const truthiness = (a) => { | ||
| if(a){ | ||
| return true; |
There was a problem hiding this comment.
You can use Boolean(a) or !!(a) here to get rid of the if else statement
| }; | ||
| const one = (a, b) => { | ||
| if ((a && !b) || (b && !a)) { | ||
| return true; |
There was a problem hiding this comment.
You can use return Boolean(((a && !b) || (b && !a))) or return !!((a && !b) || (b && !a)) here to get rid of the if/else statement.
| const isEqual = (a, b) => { | ||
| if (a === b){ | ||
| return true; | ||
| } |
There was a problem hiding this comment.
You can just return a === b here as the comparison logic evaluates to a boolean already. :)
| const isGreaterThan = (a, b) => { | ||
| if (a > b){ | ||
| return true; | ||
| } |
There was a problem hiding this comment.
Same here, return a > b will also work.
| }; | ||
| const startsWith = (char, string) => { | ||
| if (string.startsWith(char) === true){ | ||
| return true; |
There was a problem hiding this comment.
Same here you can use return string.startsWith(char) as that method already returns true or false
|
|
||
| const isLowerCase = (string) => { | ||
| if (string === string.toLowerCase()){ | ||
| return true; |
There was a problem hiding this comment.
Your answers are all really good, you can just shorten them by getting rid of the if else statements like I have suggested above :)
| function remainder (a, b) { | ||
| // your code here | ||
| } | ||
| const remainder = (a, b) => a % b; |
There was a problem hiding this comment.
Absolutely perfect 👯
|
|
||
| const hasProperty = (property, object) => { | ||
| // your code here | ||
| return object[property]? true : false; |
There was a problem hiding this comment.
Nice use of a ternary here! +1 You could also us the hasOwnProperty method https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
|
|
||
| const isOver65 = person => { | ||
| // your code here | ||
| return person.age > 65? true : false; |
There was a problem hiding this comment.
You can just shorten this to person.age > 65
|
|
||
| const getAges = people => { | ||
| // your code here | ||
| return people.map(ageArray => ageArray.age); |
There was a problem hiding this comment.
Technically we are mapping over the people array here, so each iteration is using a person. I would change the variable name from ageArray to person to be more accurate.
|
|
||
| const findByName = (name, people) => { | ||
| // your code here | ||
| return people.find(person => person.name === name); |
|
|
||
| const findHondas = cars => { | ||
| // your code here | ||
| return cars.filter(carModel => carModel.manufacturer === 'Honda'); |
There was a problem hiding this comment.
This is great. I would just suggest naming the variable car instead of carModel to be more precise as the variable actually contains more than just information about the model.
|
|
||
| const averageAge = people => { | ||
| // your code here | ||
| return people.reduce((a,b) => a + b.age, 0) / people.length; |
| return { | ||
| name: name, | ||
| age: age, | ||
| introduce: stranger => { |
| @@ -1,41 +1,59 @@ | |||
| const createPerson = (name, age) => { | |||
| // your code here | |||
| this.name = name; | |||
There was a problem hiding this comment.
Really good use of this here.
There was a problem hiding this comment.
Most people have been writing object literals like { name, age }, but both work.
| function firstCharacter (string) { | ||
| // your code here | ||
| }; | ||
| const firstCharacter = (firstAlp) => firstAlp[0]; |
There was a problem hiding this comment.
I would probably rename firstAlp to be string here as the tests can input any string.
| function firstCharacters (string, n) { | ||
| // your code here | ||
| }; | ||
| const firstCharacters = (string, n) => string.slice(0, n); |
There was a problem hiding this comment.
Perfect functions :D
anywhereiromy
left a comment
There was a problem hiding this comment.
Really good work! Just a few minor tweaks suggested.
No description provided.