-
-
Notifications
You must be signed in to change notification settings - Fork 283
Sheffield | ITP-Jan-26 | Hayriye Saricicek | Sprint 1| Module-Data-Groups #1082
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 5 commits
f0fccc0
03e23fd
7d641a3
2886968
8dc8e91
48b6e13
50c6698
585b0cb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,6 @@ | ||
| function dedupe() {} | ||
| function dedupe(arr) { | ||
| if (!Array.isArray(arr)) return []; | ||
| return [...new Set(arr)]; | ||
| } | ||
|
|
||
| module.exports = dedupe; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,22 @@ | ||
| function findMax(elements) { | ||
| //find largest number in an array | ||
| if (!Array.isArray(elements)) { | ||
| throw new Error("Input must be an array"); //checks input is an array if not throws error | ||
| } | ||
|
|
||
| if (elements.length === 0) return -Infinity; // if empty then returns -Infinity | ||
|
|
||
| let max = -Infinity; //starts at -Infinity so any number will be bigger | ||
| let foundValid = false; //starts at false and will become true if valid number found | ||
|
|
||
| for (const val of elements) { | ||
| if (!Number.isFinite(val)) continue; | ||
| foundValid = true; // loops and checks if input valid and if" valid changes foundValid to true | ||
| if (val > max) { | ||
| max = val; // if bigger than max update max | ||
| } | ||
| } | ||
| return foundValid ? max : "Invalid Input"; // if at least one valid value is found return max if no valid number is found return Invalid Input | ||
|
cjyuan marked this conversation as resolved.
Outdated
|
||
| } | ||
|
|
||
| module.exports = findMax; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,28 +16,45 @@ const findMax = require("./max.js"); | |
| // When passed to the max function | ||
| // Then it should return -Infinity | ||
| // Delete this test.todo and replace it with a test. | ||
| test.todo("given an empty array, returns -Infinity"); | ||
| describe("findMax.js", () => { | ||
| test.each([ | ||
|
Comment on lines
+19
to
+20
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should you need to classify test data into different categories, you can write:
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thank you |
||
| { input: [], expected: -Infinity }, | ||
| // Given an array with one number | ||
| // When passed to the max function | ||
| // Then it should return that number | ||
|
|
||
| // Given an array with one number | ||
| // When passed to the max function | ||
| // Then it should return that number | ||
| { input: [1], expected: 1 }, | ||
|
|
||
| // Given an array with both positive and negative numbers | ||
| // When passed to the max function | ||
| // Then it should return the largest number overall | ||
| // Given an array with both positive and negative numbers | ||
| // When passed to the max function | ||
| // Then it should return the largest number overall | ||
|
|
||
| // Given an array with just negative numbers | ||
| // When passed to the max function | ||
| // Then it should return the closest one to zero | ||
| { input: [1, 2, -3], expected: 2 }, | ||
|
|
||
| // Given an array with decimal numbers | ||
| // When passed to the max function | ||
| // Then it should return the largest decimal number | ||
| // Given an array with just negative numbers | ||
| // When passed to the max function | ||
| // Then it should return the closest one to zero | ||
|
|
||
| // Given an array with non-number values | ||
| // When passed to the max function | ||
| // Then it should return the max and ignore non-numeric values | ||
| { input: [-6, -2, -3], expected: -2 }, | ||
|
|
||
| // Given an array with only non-number values | ||
| // When passed to the max function | ||
| // Then it should return the least surprising value given how it behaves for all other inputs | ||
| // Given an array with decimal numbers | ||
| // When passed to the max function | ||
| // Then it should return the largest decimal number | ||
|
|
||
| { input: [3.5, 2.9, 6.3], expected: 6.3 }, | ||
|
|
||
| // Given an array with non-number values | ||
| // When passed to the max function | ||
| // Then it should return the max and ignore non-numeric values | ||
|
|
||
| { input: ["a", 2, 3], expected: 3 }, | ||
|
|
||
| // Given an array with only non-number values | ||
| // When passed to the max function | ||
| // Then it should return the least surprising value given how it behaves for all other inputs | ||
|
|
||
| { input: ["a", "!", "x"], expected: "Invalid Input" }, | ||
| ])("returns correct max for %o", ({ input, expected }) => { | ||
| expect(findMax(input)).toBe(expected); | ||
| }); | ||
|
cjyuan marked this conversation as resolved.
|
||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,20 @@ | ||
| function sum(elements) { | ||
| } | ||
| // adds numbers and ignores non-numbers unless there are no valid numbers then throws error | ||
|
|
||
| if (!Array.isArray(elements)) { | ||
| throw new Error("Input must be an array"); //checks input is an array if not throws error | ||
| } | ||
| if (elements.length === 0) return 0; // if empty then returns 0 | ||
|
|
||
| let total = 0; | ||
| let foundValid = false; //starts at false and will become true if valid number found | ||
|
|
||
| for (const val of elements) { | ||
| if (!Number.isFinite(val)) continue; | ||
| foundValid = true; // loops and checks if input valid and if valid changes foundValid to true | ||
| total += val; //adds number to sum | ||
| } | ||
|
|
||
| return foundValid ? total : "Invalid Input"; // if at least one valid value is found return sum if no valid number is found return Invalid Input | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you think about designing the function to support this behavior?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't understand what it is you want me to do. The idea of the function is to add numbers together and ignore everything else so I am not sure why you are asking me to do this.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Both sides are two different ways to compute "sum of all the elements in However, if As a result, in my opinion, |
||
| } | ||
| module.exports = sum; | ||
Uh oh!
There was an error while loading. Please reload this page.