1.2.1 雙重 for 循環概述
循環嵌套是指在一個循環語句中再定義一個循環語句的語法結構,例如在for循環語句中,可以再嵌套一個for 循環,這樣的 for 循環語句我們稱之為雙重for循環。
1.2.2 雙重 for 循環語法
for (外循環的初始; 外循環的條件; 外循環的操作表達式) {
for (內循環的初始; 內循環的條件; 內循環的操作表達式) {
需執行的代碼;
}
}
- 內層循環可以看做外層循環的循環體語句
- 內層循環執行的順序也要遵循 for 循環的執行順序
- 外層循環執行一次,內層循環要執行全部次數
demo:打印五行五列星星
核心邏輯:
1、內層循環負責一行打印五個星星
2、外層循環負責打印五行
var star = '';
for (var j = 1; j <= 3; j++) {
for (var i = 1; i <= 3; i++) {
star += '☆'
}
// 每次滿 5個星星 就 加一次換行
star += '\n'
}
console.log(star);
demo;打印n行n列的星星
var rows = prompt('請您輸入行數:');
var cols = prompt('請您輸入列數:');
var str = '';
for (var i = 1; i <= rows; i++) {
for (var j = 1; j <= cols; j++) {
str = str + '★';
}
str += '\n';
}
console.log(str);
demo:打印倒三角形、正三角案例
var str = '';
for (var i = 1; i <= 10; i++) { // 外層循環控制行數
for (var j = i; j <= 10; j++) { // 里層循環打印的個數不一樣 j = i
str = str + '★';
}
str += '\n';
}
console.log(str);
// 我的正三角寫法
for (var i = 1; i <= 9; i++) {
var s = '';
for (var j = 1; j <= i; j++) {
s += '★';
}
console.log(s);
}
// 我的倒三角寫法,i--
var s = '';
// 注意,這里是 i >= 1,不是i <= 10。
for (var i = 10; i >= 1; i--) {
for (var j = 1; j <= i; j++) {
s += '★';
}
s += '\n';
}
console.log(s);

demo:九九乘法表
// 一共有9行,但是每行的個數不一樣,因此需要用到雙重 for 循環
// 外層的 for 循環控制行數 i ,循環9次 ,可以打印 9 行
// 內層的 for 循環控制每行公式 j
// 核心算法:每一行 公式的個數正好和行數一致, j <= i;
// 每行打印完畢,都需要重新換一行
var str = '';
for (var i = 1; i <= 9; i++) { // 外層循環控制行數
for (var j = 1; j <= i; j++) { // 里層循環控制每一行的個數 j <= i
// 1 × 2 = 2
// str = str + '★';
str += j + '×' + i + '=' + i * j + '\t';
}
str += '\n';
}
console.log(str);

str = '';
for (let i = 1; i < 10; i++) {
for (let j = 1; j <= i; j++) {
let calc = j * i;
str += `${j}x${i}=${calc}\t`;
}
str += '\n'
}
console.log(str);

1.3.3 for 循環小結
- for 循環可以重復執行某些相同代碼
- for 循環可以重復執行些許不同的代碼,因為我們有計數器
- for 循環可以重復執行某些操作,比如算術運算符加法操作
- 隨着需求增加,雙重for循環可以做更多、更好看的效果
- 雙重 for 循環,外層循環一次,內層 for 循環全部執行
- for 循環是循環條件和數字直接相關的循環
