Reputation: 113
I need to store the following data in a vector (in this order):
cAge[0] = 'Age (1) (1)';
cAge[1] = 'Age (1) (2)';
cAge[2] = 'Age (1) (3)';
cAge[3] = 'Age (2) (1)';
cAge[4] = 'Age (2) (2)';
cAge[5] = 'Age (2) (3)';
cAge[6] = 'Age (3) (1)';
cAge[7] = 'Age (3) (2)';
cAge[8] = 'Age (3) (3)';
cAge[9] = 'Age (4) (1)';
cAge[10] = 'Age (4) (2)';
cAge[11] = 'Age (4) (3)';
I can do it with a for
loop without problems:
var cAge = [];
for (var i=1; i<=4; i++) {
for (var j=1; j<=3; j++) {
cAge.push('Age (' + i + ')' + ' ' + '(' + j + ')');
}
}
However I am not able to show all of them using the following nested loop:
for (var i=1; i<=4; i++) {
for (var j=1; j<=3; j++) {
console.log(cAge[j-1]); // <- What should j-1 be?
}
}
It produces:
Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)
What should j-1
be?
Upvotes: 0
Views: 447
Reputation: 8168
const cAge = [],
nrows = 4,
ncols = 3;
for (var i = 1; i <= nrows; i++) {
for (var j = 1; j <= ncols; j++) {
cAge.push("Age (" + i + ")" + " " + "(" + j + ")");
}
}
for (var i = 0; i < nrows; i++) {
for (var j = 0; j < ncols; j++) {
console.log(cAge[i * ncols + j]);
}
}
Here, ncols = 3
i in nested loop |
j in nested loop |
1-D index |
---|---|---|
0 | 0 | 0 * 3 + 0 = 0 |
0 | 1 | 0 * 3 + 1 = 1 |
0 | 2 | 0 * 3 + 2 = 2 |
1 | 0 | 1 * 3 + 0 = 3 |
1 | 1 | 1 * 3 + 1 = 4 |
1 | 2 | 1 * 3 + 2 = 5 |
2 | 0 | 2 * 3 + 0 = 6 |
2 | 1 | 2 * 3 + 1 = 7 |
2 | 2 | 2 * 3 + 2 = 8 |
Upvotes: 2