# Loops ## `while` loop ```javascript const raceDistances = ['Sprint', 'Olympic', 'Half-IRONMAN', 'Full IRONMAN']; ``` ```javascript let index = 0; while (index < raceDistances.length) { const distance = raceDistances[index]; console.log(distance); index++; } /* Sprint Olympic Half-IRONMAN Full IRONMAN */ ``` ## C-style `for` loop ```javascript const raceDistances = ['Sprint', 'Olympic', 'Half-IRONMAN', 'Full IRONMAN']; ``` ```javascript for (let index = 0; index < raceDistances.length; index++) { console.log(raceDistances[index]); } /* Sprint Olympic Half-IRONMAN Full IRONMAN */ ``` ## `for...of` loop This for loop gives you access to each element in the collection as you're iterating. ```javascript const raceDistances = ['Sprint', 'Olympic', 'Half-IRONMAN', 'Full IRONMAN']; ``` ```javascript for (const distance of raceDistances) { console.log(distance); } /* Sprint Olympic Half-IRONMAN Full IRONMAN */ ``` ## `for...in` loop This for loop gives you access to the current index as you're looping through a collection. ```javascript const arr = ['Bob', 'Sally', 'Tim']; for (const index in arr) { console.log(index); // 0, 1, 2 } ``` ## Challenges #### Challenge 1 Write a JavaScript for loop that will iterate from 0 to 15. For each iteration, it will check if the current number is odd or even, and display a message to the console.
Solution ```javascript for (let num = 0; num < 16; num++) { if (num % 2 === 0) { console.log(`${num} is even.`); } else { console.log(`${num} is odd.`); } } /* 0 is even. 1 is odd. 2 is even. 3 is odd. 4 is even. 5 is odd. 6 is even. 7 is odd. 8 is even. 9 is odd. 10 is even. 11 is odd. 12 is even. 13 is odd. 14 is even. 15 is odd. */ ```
*** #### Challenge 2 Write a JavaScript program which iterates the integers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".
Solution ```javascript for (let num = 1; num < 101; num++) { if (num % 3 === 0 && num % 5 === 0) { console.log('FizzBuzz'); } else if (num % 3 === 0) { console.log('Fizz'); } else if (num % 5 === 0) { console.log('Buzz'); } else { console.log(num); } } /* 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 */ ```
*** #### Challenge 3 Write a JavaScript program to construct the following pattern, using a nested for loop. ```javascript * * * * * * * * * * * * * * * ```
Solution ```javascript for (let num = 1; num < 6; num++) { let str = ''; for (let asterik = 0; asterik < num; asterik++) { str += '* '; } console.log(str); } /* * * * * * * * * * * * * * * * */ ```
*** #### Challenge 4 Create a loop that runs through each item in the fruits array. ```javascript const fruits = ["Apple", "Banana", "Orange"]; ```
Solution ```javascript const fruits = ["Apple", "Banana", "Orange"]; for (const fruit of fruits) { console.log(fruit); } /* Apple Banana Orange */ ```
*** #### Challenge 5 Multiplication Tables Write a for loop that will iterate from 0 to 10. For each iteration of the for loop, it will multiply the number by 9 and log the result (e.g. "2 * 9 = 18"). Bonus: Use a nested for loop to show the tables for every multiplier from 1 to 10 (100 results total).
Solution ```javascript for (let num = 1; num < 11; num++) { console.log(`========= ${num} Times Table =========`); for (let multiplier = 1; multiplier < 11; multiplier++) { console.log(`${num} * ${multiplier} = ${num * multiplier}`); } } /* ========= 1 Times Table ========= 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7 1 * 8 = 8 1 * 9 = 9 1 * 10 = 10 ========= 2 Times Table ========= 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 . . . */ ```
***