Has anyone ever asked you: “When would you use a nested for loop?”. Here’s a fun little exercise showing a practical application in making a multiplication table.

Make a multiplication table with nested for loops Image by CodingExercises

How to make a multiplication table in a nested for loop

Here’s the complete code:

let multiplicationTable = [];

for(let i=1 ; i<11 ; i++){
    for(let j=1 ; j<11 ; j++){
        multiplicationTable.push(`${i} times ${j} is ${i*j}`);
    }
}

console.log(multiplicationTable);

Alternatively, we can replace the innermost array.push with a simple console.log call:

console.log(`${i} times ${j} is ${i*j}`);

Either way, a multiplication table will be printed to the console.

Bonus: Domain-name generator

Another simple exercise is to use nested for loops to build some custom domain names:

let prefix = ['big', 'important', 'very', 'cool', 'super' ];
let word = [ 'code', 'coders', 'tech', 'stack', 'geeks', 'computing' ];

for(let i=0; i < prefix.length; i++) {
    for (let j=0; j < word.length; j++) {
        console.log(`${i}${j}.com`);
    }
}

The above naive approach will not result in the desired outcome. Instead, it will produce this:

00.com
01.com
02.com
...
45.com

What are we missing here?

We’re missing the fact that we’re working with arrays. So, working code will look like this:

let prefix = ['big', 'important', 'very', 'cool', 'super' ];
let word = [ 'code', 'coders', 'tech', 'stack', 'geeks', 'computing' ];

for(let i=0; i < prefix.length; i++) {
    for (let j=0; j < word.length; j++) {
        console.log(`${prefix[i]}${word[j]}.com`);
    }
}

With the above fix, our code will concatenate each member of the prefix array to each member of the word array, and tack on .com to the end.

This will result in a list of domain names being logged to the console.

We can even add all the domain names to our browser’s screen, like this:

document.body.innerHTML = "";

let prefix = ['big', 'important', 'very', 'cool', 'super' ];
let word = [ 'code', 'coders', 'tech', 'stack', 'geeks', 'computing' ];

for(let i=0; i < prefix.length; i++) {
    for (let j=0; j < word.length; j++) {
        let div = document.createElement('div');
        div.innerText = `
            ${prefix[i]}${word[j]}.com
        `
        document.body.appendChild(div)
    }
}

Now our domain names are being displayed on the screen, making it much easier to copy-paste.

This is the full list of generated domain names:

bigcode.com
bigcoders.com
bigtech.com
bigstack.com
biggeeks.com
bigcomputing.com
importantcode.com
importantcoders.com
importanttech.com
importantstack.com
importantgeeks.com
importantcomputing.com
verycode.com
verycoders.com
verytech.com
verystack.com
verygeeks.com
verycomputing.com
coolcode.com
coolcoders.com
cooltech.com
coolstack.com
coolgeeks.com
coolcomputing.com
supercode.com
supercoders.com
supertech.com
superstack.com
supergeeks.com
supercomputing.com

This completes our fun little exercise showing the usage of nested for loops.