-
-
Notifications
You must be signed in to change notification settings - Fork 321
Manchester | 26-ITP-May | Abdu Hassen | Sprint 2 | Data-groups #1313
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 all commits
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,3 +1,20 @@ | ||
| function contains() {} | ||
| function contains(givenObject, keyString) { | ||
| console.log(givenObject, keyString); | ||
| if ( | ||
| typeof givenObject !== "object" || | ||
| givenObject === null || | ||
| Array.isArray(givenObject) | ||
| ) { | ||
| return false; | ||
| } | ||
| for (const keyProperty in givenObject) { | ||
| console.log(keyString); | ||
| if (keyProperty === keyString) { | ||
| return true; | ||
| } | ||
| } | ||
| return false; | ||
| } | ||
| console.log(contains({ a: 2, b: 1 }, "a")); | ||
|
|
||
| module.exports = contains; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,10 @@ | ||
| function createLookup() { | ||
| function createLookup(countryCurrencyPairs) { | ||
| // implementation here | ||
| const currencyPairs = {}; | ||
| for (const innerPair of countryCurrencyPairs) { | ||
| const [key, value] = innerPair; | ||
| currencyPairs[key] = value; | ||
| } | ||
| return currencyPairs; | ||
| } | ||
|
|
||
| module.exports = createLookup; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,8 +6,31 @@ function parseQueryString(queryString) { | |
| const keyValuePairs = queryString.split("&"); | ||
|
|
||
| for (const pair of keyValuePairs) { | ||
| const [key, value] = pair.split("="); | ||
| queryParams[key] = value; | ||
| if (pair.length === 0) { | ||
| continue; | ||
| } else { | ||
| const equalityPosition = pair.indexOf("="); | ||
|
|
||
| if (equalityPosition === -1) { | ||
| queryParams[pair] = ""; | ||
| } else { | ||
| const key = decodeURIComponent(pair.slice(0, equalityPosition)); | ||
| const replacedKey = key.replace("+", " "); | ||
|
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. Does this work for examples with multiple +es in a single querystring |
||
|
|
||
| const value = decodeURIComponent(pair.slice(equalityPosition + 1)); | ||
| const replacedValue = value.replace("+", " "); | ||
|
|
||
| if (queryParams[replacedKey]) { | ||
| if (!Array.isArray(queryParams[replacedKey])) { | ||
| queryParams[replacedKey] = [queryParams[replacedKey]]; | ||
| } | ||
|
|
||
| queryParams[replacedKey].push(replacedValue); | ||
| } else { | ||
| queryParams[replacedKey] = replacedValue; | ||
| } | ||
| } | ||
| } | ||
| } | ||
|
|
||
| return queryParams; | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,17 @@ | ||
| function tally() {} | ||
|
|
||
| function tally(myArray) { | ||
| if (!Array.isArray(myArray)) { | ||
| throw "Error"; | ||
| } else if (myArray.length === 0) { | ||
| return {}; | ||
| } | ||
| let tallyObject = Object.create(null); | ||
| for (const singleItems of myArray) { | ||
| if (tallyObject[singleItems] === undefined) { | ||
| tallyObject[singleItems] = 1; | ||
| } else { | ||
| tallyObject[singleItems] += 1; | ||
| } | ||
| } | ||
| return tallyObject; | ||
| } | ||
| module.exports = tally; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,13 +17,29 @@ function invert(obj) { | |
| } | ||
|
|
||
| // a) What is the current return value when invert is called with { a : 1 } | ||
| // the current return value when invert is called with { a:1 } is { key: 1 } | ||
|
|
||
| // b) What is the current return value when invert is called with { a: 1, b: 2 } | ||
| // the current return value when invert is called with { a: 1, b: 2 } is { key: 2} | ||
|
|
||
| // c) What is the target return value when invert is called with {a : 1, b: 2} | ||
| // the target return value when invert is called with {a : 1, b: 2} is { '1':'a','2':'b'} | ||
|
|
||
| // c) What does Object.entries return? Why is it needed in this program? | ||
| // Object.entries is needed because it will gave as the access of the key and value by separating each key value pair. | ||
|
|
||
| // d) Explain why the current return value is different from the target output | ||
| /*the current value is different from the targeted value because the for loop already give as access for the key value pairs | ||
| but when we declare a new object the function where looking the word key in the loop because it was dot notation and taking the | ||
| word key and pairing it withe the last loop value. */ | ||
|
|
||
| // e) Fix the implementation of invert (and write tests to prove it's fixed!) | ||
| /* function invert(obj) { | ||
|
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. Can you un-comment this, comment the broken original, and then try writing some tests to see if this is correct? |
||
| const invertedObj = {}; | ||
|
|
||
| for (const [key, value] of Object.entries(obj)) { | ||
| invertedObj[value] = key; | ||
| } | ||
|
|
||
| return invertedObj; | ||
| } */ | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you need to do console.log here?