-
-
Notifications
You must be signed in to change notification settings - Fork 283
Sheffield | 26-ITP-jan | Richard Frimpong | Sprint 1 | Data Groups #1032
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 8 commits
c4b663d
4ee9bf8
1b6cc9b
4d87c5a
074cc7c
1f24b43
2993b07
8bd7f4e
bbecf91
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,17 @@ | ||
| function dedupe() {} | ||
| // Return a new array with duplicate values removed. | ||
| // Keep the first occurrence of each value. | ||
|
|
||
| function dedupe(elements) { | ||
| const uniqueElements = []; | ||
|
|
||
| for (const element of elements) { | ||
| // Add the element only if it is not already in the result array | ||
| if (!uniqueElements.includes(element)) { | ||
| uniqueElements.push(element); | ||
| } | ||
| } | ||
|
|
||
| return uniqueElements; | ||
| } | ||
|
|
||
| module.exports = dedupe; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,7 +2,7 @@ const dedupe = require("./dedupe.js"); | |
| /* | ||
| Dedupe Array | ||
|
|
||
| 📖 Dedupe means **deduplicate** | ||
| 📖 Dedupe means deduplicate | ||
|
|
||
| In this kata, you will need to deduplicate the elements of an array | ||
|
|
||
|
|
@@ -16,12 +16,32 @@ E.g. dedupe([1, 2, 1]) target output: [1, 2] | |
| // Given an empty array | ||
| // When passed to the dedupe function | ||
| // Then it should return an empty array | ||
| test.todo("given an empty array, it returns an empty array"); | ||
| test("given an empty array, it returns an empty array", () => { | ||
| expect(dedupe([])).toEqual([]); | ||
| }); | ||
|
|
||
| // Given an array with no duplicates | ||
| // When passed to the dedupe function | ||
| // Then it should return a copy of the original array | ||
| test("given an array with no duplicates, it returns a copy of the original array", () => { | ||
| const input = [1, 2, 3]; | ||
| const result = dedupe(input); | ||
|
|
||
| expect(result).toEqual(input); | ||
| expect(result).not.toBe(input); | ||
| }); | ||
|
Comment on lines
+26
to
+35
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. There is a chance both tests on lines 30-31 pass, but
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. I see the issue now. I updated the test so it no longer relies on comparing
I re-ran the implement tests and confirmed everything is passing. |
||
|
|
||
| // Given an array with strings or numbers | ||
| // When passed to the dedupe function | ||
| // Then it should remove the duplicate values, preserving the first occurence of each element | ||
| test("given an array with duplicate strings, removes duplicates and preserves first occurrence", () => { | ||
| expect(dedupe(["a", "a", "a", "b", "b", "c"])).toEqual(["a", "b", "c"]); | ||
| }); | ||
|
|
||
| test("given an array with duplicate numbers, removes duplicates and preserves first occurrence", () => { | ||
| expect(dedupe([5, 1, 1, 2, 3, 2, 5, 8])).toEqual([5, 1, 2, 3, 8]); | ||
| }); | ||
|
|
||
| test("given a mixed duplicate order, removes duplicates and preserves first occurrence", () => { | ||
| expect(dedupe([1, 2, 1])).toEqual([1, 2]); | ||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,16 @@ | ||
| // Find the largest numerical value in an array. | ||
| // Non-number values should be ignored. | ||
|
|
||
| function findMax(elements) { | ||
| let maxValue = -Infinity; | ||
|
|
||
| for (const element of elements) { | ||
| if (Number.isFinite(element) && element > maxValue) { | ||
| maxValue = element; | ||
| } | ||
| } | ||
|
|
||
| return maxValue; | ||
| } | ||
|
|
||
| module.exports = findMax; | ||
| module.exports = findMax; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,16 @@ | ||
| // Sum the numerical values in an array. | ||
| // Non-number values should be ignored. | ||
|
|
||
| function sum(elements) { | ||
| let total = 0; | ||
|
|
||
| for (const element of elements) { | ||
| if (Number.isFinite(element)) { | ||
| total += element; | ||
| } | ||
| } | ||
|
|
||
| return total; | ||
| } | ||
|
|
||
| module.exports = sum; |
Uh oh!
There was an error while loading. Please reload this page.