-
-
Notifications
You must be signed in to change notification settings - Fork 282
LONDON_10_Saqib_Javed_JavaScript-Core-1-Coursework-Week3 #267
base: main
Are you sure you want to change the base?
Changes from 5 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 |
|---|---|---|
|
|
@@ -12,52 +12,62 @@ | |
| */ | ||
|
|
||
| function getTemperatureReport(cities) { | ||
| // TODO | ||
| temperatures = []; | ||
|
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. The logic looks good to me 👍 |
||
| for (city of cities) { | ||
| temperature = temperatureService(city); | ||
| information_string = `The temperature in ${city} is ${temperature} degrees`; | ||
| temperatures.push(information_string); | ||
| } | ||
| return temperatures; | ||
| } | ||
|
|
||
| const cities = [ | ||
| "London", | ||
| "Paris", | ||
| "Barcelona", | ||
| "Dubai", | ||
| "Mumbai", | ||
| "São Paulo", | ||
| "Lagos", | ||
| ]; | ||
|
|
||
| console.log(getTemperatureReport(cities)); | ||
|
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. Well explained,Well Done. |
||
|
|
||
| /* ======= TESTS - DO NOT MODIFY ===== */ | ||
|
|
||
| function temperatureService(city) { | ||
| let temparatureMap = new Map(); | ||
|
|
||
| temparatureMap.set('London', 10); | ||
| temparatureMap.set('Paris', 12); | ||
| temparatureMap.set('Barcelona', 17); | ||
| temparatureMap.set('Dubai', 27); | ||
| temparatureMap.set('Mumbai', 29); | ||
| temparatureMap.set('São Paulo', 23); | ||
| temparatureMap.set('Lagos', 33); | ||
| return temparatureMap.get(city); | ||
| let temparatureMap = new Map(); | ||
|
|
||
| temparatureMap.set("London", 10); | ||
| temparatureMap.set("Paris", 12); | ||
| temparatureMap.set("Barcelona", 17); | ||
| temparatureMap.set("Dubai", 27); | ||
| temparatureMap.set("Mumbai", 29); | ||
| temparatureMap.set("São Paulo", 23); | ||
| temparatureMap.set("Lagos", 33); | ||
|
|
||
| return temparatureMap.get(city); | ||
| } | ||
|
|
||
| test("should return a temperature report for the user's cities", () => { | ||
| let usersCities = [ | ||
| "London", | ||
| "Paris", | ||
| "São Paulo" | ||
| ] | ||
|
|
||
| expect(getTemperatureReport(usersCities)).toEqual([ | ||
| "The temperature in London is 10 degrees", | ||
| "The temperature in Paris is 12 degrees", | ||
| "The temperature in São Paulo is 23 degrees" | ||
| ]); | ||
| let usersCities = ["London", "Paris", "São Paulo"]; | ||
|
|
||
| expect(getTemperatureReport(usersCities)).toEqual([ | ||
| "The temperature in London is 10 degrees", | ||
| "The temperature in Paris is 12 degrees", | ||
| "The temperature in São Paulo is 23 degrees", | ||
| ]); | ||
| }); | ||
|
|
||
| test("should return a temperature report for the user's cities (alternate input)", () => { | ||
| let usersCities = [ | ||
| "Barcelona", | ||
| "Dubai" | ||
| ] | ||
|
|
||
| expect(getTemperatureReport(usersCities)).toEqual([ | ||
| "The temperature in Barcelona is 17 degrees", | ||
| "The temperature in Dubai is 27 degrees" | ||
| ]); | ||
| let usersCities = ["Barcelona", "Dubai"]; | ||
|
|
||
| expect(getTemperatureReport(usersCities)).toEqual([ | ||
| "The temperature in Barcelona is 17 degrees", | ||
| "The temperature in Dubai is 27 degrees", | ||
| ]); | ||
| }); | ||
|
|
||
| test("should return an empty array if the user hasn't selected any cities", () => { | ||
| expect(getTemperatureReport([])).toEqual([]); | ||
| }); | ||
| expect(getTemperatureReport([])).toEqual([]); | ||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,7 +5,17 @@ | |
| Implement the function below, which will return a new array containing only article titles which will fit. | ||
| */ | ||
| function potentialHeadlines(allArticleTitles) { | ||
| // TODO | ||
| // TODO | ||
|
|
||
| let lessArticle = []; | ||
|
|
||
| for (headline of allArticleTitles) { | ||
|
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. The code looks good here. |
||
| if (headline.length <= 65) { | ||
| lessArticle.push(headline); | ||
| } | ||
| } | ||
|
|
||
| return lessArticle; | ||
| } | ||
|
|
||
| /* | ||
|
|
@@ -14,68 +24,108 @@ function potentialHeadlines(allArticleTitles) { | |
| (you can assume words will always be seperated by a space) | ||
| */ | ||
| function titleWithFewestWords(allArticleTitles) { | ||
| // TODO | ||
| // TODO | ||
|
|
||
| headlines = potentialHeadlines(allArticleTitles); | ||
|
|
||
| let shortHeadline = []; | ||
| let fewestWords = 100; | ||
|
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. This is not bad - and it might work for the test cases... |
||
|
|
||
| for (article of allArticleTitles) { | ||
| articleSplitter = article.split(" "); | ||
|
|
||
| if (articleSplitter.length < fewestWords) { | ||
| fewestWords = articleSplitter.length; | ||
| shortHeadline = article; | ||
| } | ||
| } | ||
|
|
||
| return shortHeadline; | ||
| } | ||
|
|
||
| /* | ||
| The editor of the FT has realised that headlines which have numbers in them get more clicks! | ||
| Implement the function below to return a new array containing all the headlines which contain a number. | ||
| (Hint: remember that you can also loop through the characters of a string if you need to) | ||
| */ | ||
|
|
||
| function headlinesWithNumbers(allArticleTitles) { | ||
|
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. Very nice implementation for this one 👏 |
||
| // TODO | ||
| // TODO | ||
|
|
||
| let headlinesWithNumbers = []; | ||
|
|
||
| for (singleTitle of allArticleTitles) { | ||
| let numberChecker = /[0-9]/.test(singleTitle); | ||
|
|
||
| if (numberChecker === true) { | ||
|
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. Normally when you have an |
||
| headlinesWithNumbers.push(singleTitle); | ||
| } | ||
| } | ||
| return headlinesWithNumbers; | ||
| } | ||
|
|
||
| /* | ||
| The Financial Times wants to understand what the average number of characters in an article title is. | ||
| Implement the function below to return this number - rounded to the nearest integer. | ||
| */ | ||
| function averageNumberOfCharacters(allArticleTitles) { | ||
|
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. This looks almost perfect to me! |
||
| // TODO | ||
| } | ||
| // TODO | ||
|
|
||
| totalcharacters = 0; | ||
|
|
||
| for (let items of allArticleTitles) { | ||
| totalcharacters = totalcharacters + items.length; | ||
| } | ||
|
|
||
| return Math.round(totalcharacters / allArticleTitles.length); | ||
| } | ||
|
|
||
| /* ======= List of Articles - DO NOT MODIFY ===== */ | ||
| const ARTICLE_TITLES = [ | ||
| "Streaming wars drive media groups to spend more than $100bn on new content", | ||
| "Amazon Prime Video India country head: streaming is driving a TV revolution", | ||
| "Aerospace chiefs prepare for bumpy ride in recovery of long-haul flights", | ||
| "British companies look to muscle in on US retail investing boom", | ||
| "Libor to take firm step towards oblivion on New Year's Day", | ||
| "Audit profession unattractive to new recruits, says PwC boss", | ||
| "Chinese social media users blast Elon Musk over near miss in space", | ||
| "Companies raise over $12tn in 'blockbuster' year for global capital markets", | ||
| "The three questions that dominate investment", | ||
| "Brussels urges Chile's incoming president to endorse EU trade deal", | ||
| "Streaming wars drive media groups to spend more than $100bn on new content", | ||
| "Amazon Prime Video India country head: streaming is driving a TV revolution", | ||
| "Aerospace chiefs prepare for bumpy ride in recovery of long-haul flights", | ||
| "British companies look to muscle in on US retail investing boom", | ||
| "Libor to take firm step towards oblivion on New Year's Day", | ||
| "Audit profession unattractive to new recruits, says PwC boss", | ||
| "Chinese social media users blast Elon Musk over near miss in space", | ||
| "Companies raise over $12tn in 'blockbuster' year for global capital markets", | ||
| "The three questions that dominate investment", | ||
| "Brussels urges Chile's incoming president to endorse EU trade deal", | ||
| ]; | ||
|
|
||
| /* ======= TESTS - DO NOT MODIFY ===== */ | ||
|
|
||
| test("should only return potential headlines", () => { | ||
| expect(new Set(potentialHeadlines(ARTICLE_TITLES))).toEqual(new Set([ | ||
| "British companies look to muscle in on US retail investing boom", | ||
| "Libor to take firm step towards oblivion on New Year's Day", | ||
| "Audit profession unattractive to new recruits, says PwC boss", | ||
| "The three questions that dominate investment" | ||
| ])); | ||
| expect(new Set(potentialHeadlines(ARTICLE_TITLES))).toEqual( | ||
| new Set([ | ||
| "British companies look to muscle in on US retail investing boom", | ||
| "Libor to take firm step towards oblivion on New Year's Day", | ||
| "Audit profession unattractive to new recruits, says PwC boss", | ||
| "The three questions that dominate investment", | ||
| ]) | ||
| ); | ||
| }); | ||
|
|
||
| test("should return an empty array for empty input", () => { | ||
| expect(potentialHeadlines([])).toEqual([]); | ||
| expect(potentialHeadlines([])).toEqual([]); | ||
| }); | ||
|
|
||
| test("should return the title with the fewest words", () => { | ||
| expect(titleWithFewestWords(ARTICLE_TITLES)).toEqual("The three questions that dominate investment"); | ||
| expect(titleWithFewestWords(ARTICLE_TITLES)).toEqual( | ||
| "The three questions that dominate investment" | ||
| ); | ||
| }); | ||
|
|
||
| test("should only return headlines containing numbers", () => { | ||
| expect(new Set(headlinesWithNumbers(ARTICLE_TITLES))).toEqual(new Set([ | ||
| "Streaming wars drive media groups to spend more than $100bn on new content", | ||
| "Companies raise over $12tn in 'blockbuster' year for global capital markets" | ||
| ])); | ||
| expect(new Set(headlinesWithNumbers(ARTICLE_TITLES))).toEqual( | ||
| new Set([ | ||
| "Streaming wars drive media groups to spend more than $100bn on new content", | ||
| "Companies raise over $12tn in 'blockbuster' year for global capital markets", | ||
| ]) | ||
| ); | ||
| }); | ||
|
|
||
| test("should return the average number of characters in a headline", () => { | ||
| expect(averageNumberOfCharacters(ARTICLE_TITLES)).toEqual(65); | ||
| expect(averageNumberOfCharacters(ARTICLE_TITLES)).toEqual(65); | ||
| }); | ||
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.
Nice work