While Loops
1 2 3 4 5 6 7 | var myArr = []; var i = 0; while (i < 5) { myArr.push(i); i++; } |
For Loops
1 2 3 4 5 6 | var myArr = []; // for ([initialization]; [condition]; [final-expression]) for ( var i = 0; i < 5; i++) { myArr.push(i); } |
Iterate through an Array with a For Loop
1 2 3 4 5 6 | var myArr = [ 2, 3, 4, 5, 6]; var total = 0; for ( var i = 0; i < myArr.length; i++) { total += myArr[i]; } |
Nesting For Loops
1 2 3 4 5 6 7 8 9 | var myArr = [ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ] ; for ( var i = 0 ; i < myArr . length ; i + + ) { for ( var j = 0 ; j < myArr [ i ] . length ; j + + ) { console . log ( myArr [ i ] [ j ] ) ; } } |
For…In Loops
Iterate through all the keys within an object.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | let users = { Max: { age: 27 }, Mira: { age: 32 }, Rich: { age: 48 } }; for ( let user in users) { console.log(user); // logs: Max, Mira, Rich if (users[user].age > 40) { console.log(`${user} is old.`); } } |
Do…While Loops
A do...while
loop ensures that the code inside the loop will run at least once.
1 2 3 4 5 6 | var myArr = []; var i = 0; do { myArr.push(i); i++; } while (i < 5); |
Replace Loops using Recursion
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | /* For Loop */ function multiply(arr, n) { var product = 1; for ( var i = 0; i < n; i++) { product *= arr[i]; } return product; } /* Replace For Loop with Recursion */ function multiply(arr, n) { if (n <= 0) { return 1; } else { return multiply(arr, n - 1) * arr[n - 1]; } } |
Note: Recursive functions must have a base case when they return without calling the function again (in this example, when n <= 0
), otherwise they can never finish executing.
01 02 03 04 05 06 07 08 09 10 11 12 | /* Count to n */ function countup(n) { if (n < 1) { return []; } else { const countArray = countup(n - 1); countArray.push(n); return countArray; } } console.log(countup(5)); // [ 1, 2, 3, 4, 5 ] |
Note: The push happens last, after the recursive call has returned. Thats why the value of n
decreases, but the values in the final array are increasing.
01 02 03 04 05 06 07 08 09 10 11 12 | /* Create a Range of Numbers */ function rangeOfNumbers(startNum, endNum) { if (startNum == endNum) { return [startNum]; } else if (startNum < endNum) { const rangeArray = rangeOfNumbers(startNum + 1, endNum); rangeArray.unshift(startNum); return rangeArray; } }; console.log(rangeOfNumbers(5, 10)); // [ 5, 6, 7, 8, 9, 10 ] |