diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6e..4a673b9acf 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,4 @@ count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 // Describe what line 3 is doing, in particular focus on what = is doing +// In line 3 we are adding 1 to the current value of count, the = symbole is the assignment operator which means store the value on the right side into the variable on the left side \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f6175..5b2d92088e 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,8 @@ let lastName = "Johnson"; // Declare a variable called initials that stores the first character of each string. // This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. -let initials = ``; +let initials = firstName[0]+middleName[0]+lastName[0]; +console.log(initials); // https://www.google.com/search?q=get+first+character+of+string+mdn diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28e..df35c5df4d 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -11,13 +11,18 @@ const filePath = "/Users/mitch/cyf/Module-JS1/week-1/interpret/file.txt"; const lastSlashIndex = filePath.lastIndexOf("/"); +console.log(lastSlashIndex); const base = filePath.slice(lastSlashIndex + 1); +console.log(base); console.log(`The base part of ${filePath} is ${base}`); // Create a variable to store the dir part of the filePath variable // Create a variable to store the ext part of the variable -const dir = ; -const ext = ; + +const dir = filePath.slice(filePath[0],lastSlashIndex); +const ext = filePath.slice(filePath.lastIndexOf("."),filePath.length); + +console.log(`The dir Part is ${dir} and the ext Part is ${ext}`); // https://www.google.com/search?q=slice+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js index 292f83aabb..ec15e88a46 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -1,9 +1,15 @@ const minimum = 1; const maximum = 100; -const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; +let random_number=Math.random(); //Math.random() is pre defined javascript function which generate an integer or float +const num = Math.floor(random_number * (maximum - minimum + 1)) + minimum; //Math.floor is pre defined javascript function which return the closest lowest number to the gived parameter + +console.log(`Our random number is ${random_number} and if we multiply it by ${maximum+minimum+1} it will be = ${random_number * (maximum - minimum +1) + minimum} and the closest down round is ${num}`); // In this exercise, you will need to work out what num represents? // Try breaking down the expression and using documentation to explain what it means // It will help to think about the order in which expressions are evaluated // Try logging the value of num and running the program several times to build an idea of what the program is doing + + +//Num represent integer number round between 1 and 100 \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f7..65ad3030d6 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,2 @@ -This is just an instruction for the first activity - but it is just for human consumption -We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file +//This is just an instruction for the first activity - but it is just for human consumption +//We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js index 7a43cbea76..6fcf8c8dea 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,4 @@ // trying to create an age variable and then reassign the value by 1 - -const age = 33; +// it's a const variable , const variable can't be changed we need to change it to let +let age = 33; age = age + 1; diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831d..b52ee48aba 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,6 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? - -console.log(`I was born in ${cityOfBirth}`); +//cityofbirth is intialized after console.log which can not be readable only if it is before the console.log const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); + diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884db..148182d8cc 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -1,9 +1,11 @@ -const cardNumber = 4533787178994213; +const cardNumber = '4533787178994213'; const last4Digits = cardNumber.slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber // However, the code isn't working // Before running the code, make and explain a prediction about why the code won't work +//.slice is working only on string or array and cardNumber values are integer // Then run the code and see what error it gives. +//The error slice is not a function // Consider: Why does it give this error? Is this what I predicted? If not, what's different? // Then try updating the expression last4Digits is assigned to, in order to get the correct value diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 21dad8c5d1..c5bbb80568 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,4 @@ -const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const _12HourClockTime = "20:53"; +const _24hourClockTime = "08:53"; + +//Javascript variables name can not start with a number, only a letter,underscore or dollar sign \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e18..d7b7d78b7b 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -2,7 +2,7 @@ let carPrice = "10,000"; let priceAfterOneYear = "8,543"; carPrice = Number(carPrice.replaceAll(",", "")); -priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); +priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); const priceDifference = carPrice - priceAfterOneYear; const percentageChange = (priceDifference / carPrice) * 100; @@ -12,11 +12,16 @@ console.log(`The percentage change is ${percentageChange}`); // Read the code and then answer the questions below // a) How many function calls are there in this file? Write down all the lines where a function call is made +//We have called function number twice , line 4 and line 5 // b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? +//line 5 replaceall method doesn't have the correct paramter as comma is missing // c) Identify all the lines that are variable reassignment statements +//line 4 and 5 are variable reassignment // d) Identify all the lines that are variable declarations +//line 1,2,7 and 8 are lines for variable declarations // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? +//replaceall method replace the existent variable with different variable given on paramter for both \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d2395587..c1b61baf74 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -1,4 +1,4 @@ -const movieLength = 8784; // length of movie in seconds +const movieLength = 1000000; // length of movie in seconds const remainingSeconds = movieLength % 60; const totalMinutes = (movieLength - remainingSeconds) / 60; @@ -12,14 +12,20 @@ console.log(result); // For the piece of code above, read the code and then answer the following questions // a) How many variable declarations are there in this program? +//6 variables // b) How many function calls are there? +//We have no function called // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +//This represent the rest seconds after calculating ho many minutes , as % will give the rest // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +//Totalminutes will show how many minutes in the movie // e) What do you think the variable result represents? Can you think of a better name for this variable? +//result variable will show the exact film duration in hours, minutes and seconds i prefer calling the variable name movie_duration // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +//Correct this code will work for all values \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69a..7d61fcdf6a 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -1,20 +1,24 @@ -const penceString = "399p"; +const penceString = "399p"; //initialises a string variable with the value "399p" const penceStringWithoutTrailingP = penceString.substring( 0, penceString.length - 1 -); +); //This variable will have value of 399 +console.log(penceStringWithoutTrailingP); + +const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); //This variable will have value of 399 without adding any 0 because target length already 3 +console.log(paddedPenceNumberString); -const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); const pounds = paddedPenceNumberString.substring( 0, paddedPenceNumberString.length - 2 -); +); // This variable value will be 3 +console.log(pounds); const pence = paddedPenceNumberString - .substring(paddedPenceNumberString.length - 2) - .padEnd(2, "0"); - + .substring(paddedPenceNumberString.length - 2)//Here we will copy last 99 + .padEnd(2, "0"); //padend function will not works because target length already 2 +console.log(pence); console.log(`£${pounds}.${pence}`); // This program takes a string representing a price in pence diff --git a/Sprint-1/4-stretch-explore/chrome.md b/Sprint-1/4-stretch-explore/chrome.md index e7dd5feafe..cc4ea113c8 100644 --- a/Sprint-1/4-stretch-explore/chrome.md +++ b/Sprint-1/4-stretch-explore/chrome.md @@ -11,8 +11,12 @@ In the Chrome console, invoke the function `alert` with an input string of `"Hello world!"`; What effect does calling the `alert` function have? +//Alert function showing alert on your browser Now try invoking the function `prompt` with a string input of `"What is your name?"` - store the return value of your call to `prompt` in an variable called `myName`. What effect does calling the `prompt` function have? +//prompt function is an alert function that can store data into variables + What is the return value of `prompt`? +//undefined diff --git a/Sprint-1/4-stretch-explore/objects.md b/Sprint-1/4-stretch-explore/objects.md index 0216dee56a..434bb1457d 100644 --- a/Sprint-1/4-stretch-explore/objects.md +++ b/Sprint-1/4-stretch-explore/objects.md @@ -7,10 +7,14 @@ Open the Chrome devtools Console, type in `console.log` and then hit enter What output do you get? Now enter just `console` in the Console, what output do you get back? - +ƒ log() { [native code] } Try also entering `typeof console` +object Answer the following questions: What does `console` store? +Console stores all command that you can need to debug the code What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean? +Console.log will display the code to the console , while console.assert is meant to test your code and show you the message you are including +. to choose which built in function from library of console. diff --git a/Sprint-1/readme.md b/Sprint-1/readme.md index 62d24c9580..3b731d881d 100644 --- a/Sprint-1/readme.md +++ b/Sprint-1/readme.md @@ -33,3 +33,6 @@ https://developer.mozilla.org/en-US/docs/Web/JavaScript ## 4 Explore - Stretch 💪 This stretch activity will get you to start exploring new concepts and environments by yourself. It will do so by prompting you to reflect on some questions. + + +Working on Sprint 1 diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a07..1911b75af2 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,19 @@ // Predict and explain first... -// =============> write your prediction here +// =============> This function should return first letter of the input string capitalised + from second letter of the input string till the end using slice function // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring +// ==============> function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; + //let str_final = `${str[0].toUpperCase()}${str.slice(1)}`; + //return str_final; + + str = `${str[0].toUpperCase()}${str.slice(1)}`; return str; } -// =============> write your explanation here -// =============> write your new code here +// =============> str variable is input that has been declared in the function parameter, we can not redeclare a parameter variable +// =============> we can declare new variable to receive the final result or not declare again the variable and return directly + +console.log(capitalise("iheb")); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f4..fbce4cda9a 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -1,20 +1,26 @@ -// Predict and explain first... +// Here we have a function that convert decimal number to percentage // Why will an error occur when this program runs? -// =============> write your prediction here +// =============> Because a global variable is being declared again inside a function and we are not calling the function on the console.log // Try playing computer with the example to work out what is going on -function convertToPercentage(decimalNumber) { +/*function convertToPercentage(decimalNumber) { const decimalNumber = 0.5; const percentage = `${decimalNumber * 100}%`; return percentage; -} - -console.log(decimalNumber); - -// =============> write your explanation here +}*/ +//console.log(decimalNumber); +// =============> Because a global variable is being declared again inside a function and we are not calling the function on the console.log // Finally, correct the code to fix the problem // =============> write your new code here +function convertToPercentage(decimalNumber) { + decimalNumber = 0.5; + const percentage = `${decimalNumber * 100}%`; + + return percentage; +} + +console.log(convertToPercentage()); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cfe..14570dd015 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -3,18 +3,21 @@ // this function should square any number but instead we're going to get an error -// =============> write your prediction of the error here +// =============> we are passing value as parameter , we need to pass variable name -function square(3) { +/*function square(3) { return num * num; -} +}*/ -// =============> write the error message here +// =============> SyntaxError: Unexpected number -// =============> explain this error message here +// =============> we have invalid code which causing the error // Finally, correct the code to fix the problem // =============> write your new code here +function square(num) { + return num*num; +} \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b417..6df3053e08 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,20 @@ // Predict and explain first... -// =============> write your prediction here +// =============> i think we can not console log twice , the function should return data to the console log otherwise we will have undefined -function multiply(a, b) { +/*function multiply(a, b) { console.log(a * b); -} +}*/ -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); +//console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); // =============> write your explanation here // Finally, correct the code to fix the problem // =============> write your new code here + +function multiply(a, b){ + return a*b; +} + +console.log(`The result of multiplying 10 and 32 is ${multiply(10,32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcfd..1f3ed03b12 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,19 @@ // Predict and explain first... -// =============> write your prediction here +// =============> i think we will have syntax error -function sum(a, b) { +/*function sum(a, b) { return; a + b; } -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/ -// =============> write your explanation here +// =============> we didn't have error but the function is not working because we are not returning as line 5 is closed by ; // Finally, correct the code to fix the problem // =============> write your new code here + +function sum(a, b) { + return a+b; +} + +console.log(`The sum of 10 and 32 is ${sum(10,32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc35..4542b2f297 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -1,9 +1,10 @@ -// Predict and explain first... +// the function should return one last digit , but we are passing any parameter variable to the function and we are passing const number // Predict the output of the following code: +//always will be 3 // =============> Write your prediction here -const num = 103; +/*const num = 103; function getLastDigit() { return num.toString().slice(-1); @@ -11,14 +12,22 @@ function getLastDigit() { console.log(`The last digit of 42 is ${getLastDigit(42)}`); console.log(`The last digit of 105 is ${getLastDigit(105)}`); -console.log(`The last digit of 806 is ${getLastDigit(806)}`); +console.log(`The last digit of 806 is ${getLastDigit(806)}`);*/ // Now run the code and compare the output to your prediction // =============> write the output here -// Explain why the output is the way it is +// when we defined the function we didn't define variable to the parameter that store the input when we are calling the function, and we are using num which is const variable defined // =============> write your explanation here // Finally, correct the code to fix the problem // =============> write your new code here +let num = 103; + +function getLastDigit(num) { + return num.toString().slice(-1); +} +console.log(`The last digit of 42 is ${getLastDigit(42)}`); +console.log(`The last digit of 105 is ${getLastDigit(105)}`); +console.log(`The last digit of 806 is ${getLastDigit(806)}`); // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1b..4e7debae56 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -15,5 +15,7 @@ // It should return their Body Mass Index to 1 decimal place function calculateBMI(weight, height) { - // return the BMI of someone based off their weight and height -} \ No newline at end of file + return (weight / (height*height)).toFixed(1); +} + +console.log(calculateBMI(70,1.73)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad9..0188a7ca75 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,9 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase + +function toUpperSnakeCase(strinp) { + return strinp.replaceAll(" ","_").toUpperCase(); +} + +console.log(toUpperSnakeCase("lord of the rings")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a703..9a6158b92c 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,50 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs + +/*const penceString = "399p"; //initialises a string variable with the value "399p" + +const penceStringWithoutTrailingP = penceString.substring( + 0, + penceString.length - 1 +); //This variable will have value of 399 +console.log(penceStringWithoutTrailingP); + +const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); //This variable will have value of 399 without adding any 0 because target length already 3 +console.log(paddedPenceNumberString); + +const pounds = paddedPenceNumberString.substring( + 0, + paddedPenceNumberString.length - 2 +); // This variable value will be 3 +console.log(pounds); + +const pence = paddedPenceNumberString + .substring(paddedPenceNumberString.length - 2)//Here we will copy last 99 + .padEnd(2, "0"); //padend function will not works because target length already 2 +console.log(pence); +console.log(`£${pounds}.${pence}`);*/ + +function topound(penceString){ + + const penceStringWithoutTrailingP = penceString.substring( + 0, + penceString.length - 1 +); //This variable will have value of 399 + + +const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); //This variable will have value of 399 without adding any 0 because target length already 3 + +const pounds = paddedPenceNumberString.substring( + 0, + paddedPenceNumberString.length - 2 +); // This variable value will be 3 + + +const pence = paddedPenceNumberString + .substring(paddedPenceNumberString.length - 2)//Here we will copy last 99 + .padEnd(2, "0"); //padend function will not works because target length already 2 + return `£${pounds}.${pence}`; +} + +console.log(topound("399p")); \ No newline at end of file diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 7c98eb0e8c..ae9103f817 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -11,24 +11,25 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } +console.log(formatTimeDisplay(61)); // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions // Questions // a) When formatTimeDisplay is called how many times will pad be called? -// =============> write your answer here +// =============> pad function is called 3 times // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? -// =============> write your answer here +// =============> 0 // c) What is the return value of pad is called for the first time? -// =============> write your answer here +// =============> 00 // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer -// =============> write your answer here +// =============> 1 , because remainingSeconds variable data is passing to this function // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer -// =============> write your answer here +// =============> '01' , we are adding at the begining of the variable 0 and not passing the length of 2 diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 32a32e66b8..190b7ee9de 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,21 +4,24 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - if (hours > 12) { - return `${hours - 12}:00 pm`; + const minutes= time.slice(time.indexOf(":")+1,time.length); + + if (hours > 12 || hours == 12) { + + return `${(hours - 12).toString().padStart(2, "0")}:${minutes} pm`; } return `${time} am`; } -const currentOutput = formatAs12HourClock("08:00"); -const targetOutput = "08:00 am"; +const currentOutput = formatAs12HourClock("09:00"); +const targetOutput = "09:00 am"; console.assert( currentOutput === targetOutput, `current output: ${currentOutput}, target output: ${targetOutput}` ); -const currentOutput2 = formatAs12HourClock("23:00"); -const targetOutput2 = "11:00 pm"; +const currentOutput2 = formatAs12HourClock("23:21"); +const targetOutput2 = "11:21 pm"; console.assert( currentOutput2 === targetOutput2, `current output: ${currentOutput2}, target output: ${targetOutput2}`