Stacy's JS Adagrams vanilla fiah#39
Conversation
beccaelenzil
left a comment
There was a problem hiding this comment.
JS Adagrams
Major Learning Goals/Code Review
| Criteria | yes/no, and optionally any details/lines of code to reference |
|---|---|
Correctly uses variables, and only uses const and let variables. The program prefers const variables. The program never uses var. |
✔️ |
| Practices best-practices in JavaScript syntax. There are semi-colons at the end of most lines that need semi-colons. Variables and functions are named with camelCase. | ✔️ |
| Correctly creates and calls functions within an object with proper syntax (parameters, return statements, etc.) | ✔️ |
| Uses correct syntax for conditional logic and iteration | ✔️ |
| Practices git with at least 3 small commits and meaningful commit messages | ✔️ |
Utilizes unit tests to verify code; tests can run using the command $ npm test test/adagrams.test.js and we see test successes and/or failures |
✔️ |
Functional Requirements
| Functional Requirement | yes/no |
|---|---|
For the drawLetters function, there is an appropriate data structure to store the letter distribution. (You are more likely to draw an 'E' than an 'X'.) |
✔️ |
Utilizes unit tests to verify code; all tests for drawLetters and usesAvailableLetters pass |
✔️ |
Utilizes unit tests to verify code; all tests for scoreWord pass |
✔️ |
Utilizes unit tests to verify code; all tests for highestScoreFrom pass |
✔️ |
Overall Feedback
Great work on this project! In this project you’ve taken some interesting logic and worked it into JavaScript syntax. Your code is very clear and readable. Nice work!
| Overall Feedback | Criteria | yes/no |
|---|---|---|
| Green (Meets/Exceeds Standards) | 5+ in Code Review && 3+ in Functional Requirements | ✔️ |
Code Style Bonus Awards
Was the code particularly impressive in code style for any of these reasons (or more...?)
| Quality | Yes? |
|---|---|
| Perfect Indentation | ✅ |
| Elegant/Clever | ✅ |
| Descriptive/Readable | ✅ |
| Concise | ✅ |
| Logical/Organized | ✅ |
| const addLetters = function (letters, frequency) { | ||
| letters.forEach(function (letter) { | ||
| for (let i = 0; i < frequency; i++) { | ||
| letterPool.push(letter); | ||
| } | ||
| }) |
There was a problem hiding this comment.
As an arrow function, this would look like this:
| const addLetters = function (letters, frequency) { | |
| letters.forEach(function (letter) { | |
| for (let i = 0; i < frequency; i++) { | |
| letterPool.push(letter); | |
| } | |
| }) | |
| const addLetters = (letters, frequency) => { | |
| letters.forEach(function (letter) { | |
| for (let i = 0; i < frequency; i++) { | |
| letterPool.push(letter); | |
| } | |
| }) |
| drawLetters() { | ||
| // Implement this method for wave 1 | ||
| const letterPool = []; | ||
| const addLetters = function (letters, frequency) { |
There was a problem hiding this comment.
This is a clever little helper function and a creative way to dynamically fill the letterPool.
|
|
||
| const inHandHash = {} | ||
| lettersInHand.forEach((letter) => { | ||
| inHandHash[letter] === undefined ? inHandHash[letter] = 1 : inHandHash[letter]++; |
| valid = false; | ||
| } else if (inHandHash[checkLetter] >= 1) { | ||
| inHandHash[checkLetter] -= 1; | ||
| } else {valid = false;} |
There was a problem hiding this comment.
Consider moving valid = false to create more consistency with your syntax and increase readability.
| if (topWord.length === 10 && highestScore.word.length !== 10) { | ||
| highestScore.score = topScore; | ||
| highestScore.word = topWord; | ||
| } else if (topWord.length < highestScore.word.length && highestScore.word.length !== 10) { | ||
| highestScore.score = topScore; | ||
| highestScore.word = topWord; | ||
| } |
There was a problem hiding this comment.
Nice, clean logic! Consider breaking this out into it's own helper function called tieBreaker.
Assignment Submission: JS Adagrams
Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.
Reflection