iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

一個月的後端學習之旅系列 第 15

【DAY15】Nested loop、Break、Continue、Math Object

  • 分享至 

  • xImage
  •  

巢狀迴圈 nested loop

指在 loop 內部還有另一個 loop 的情況,內部迴圈以及外部迴圈可以是任何類型

執行規則:內部迴圈將在外部迴圈的每次迭代中,從頭到尾執行一次

for (let i = 0; i < 3; i++) {
  for (let j = 10; j < 15; j++) {
    console.log(j);
  }
}
// -> 10, 11, 12, 13, 14, 10, 11, 12, 13, 14, 10, 11, 12, 13, 14

// 執行順序
// i = 0, j = 10, 11, 12, 13, 14
// i = 1, j = 10, 11, 12, 13, 14
// i = 2, j = 10, 11, 12, 13, 14

for (let i = 0; i < 3; i++) {
  for (let j = 10; j < 15; j++) {
    console.log(i, j);
  }
}
// -> 0 10, 0 11, 0 12, 0 13, 0 14, 1 10, 1 11, 1 12, 1 13, 1 14, 2 10, 2 11, 2 12, 2 13, 2 14

計算執行次數

let counter = 0;

// -> 總共執行次數是外面 100 * 裡面 500
for (let i = 0; i < 100; i++) {
  for (let j = 0; j < 500; j++) {
    counter++;
  }
}
console.log(counter);  // -> 50000

程式碼放置位置不同,所產生的結果會不一樣

for (let i = 0; i < 100; i++) {
  let counter = 0;
  for (let j = 0; j < 500; j++) {
    counter++;
  }
  console.log(counter);  // -> 500
}

Break

用於終止存在它的迴圈

for (let i = 0; i < 100; i++) {
  console.log(i);

  if (i == 10) {
    break;
  }
}

break 語句存在於 nested loop 中,它只會終止那些包含 break 語句的 loop

for (let i = 0; i < 100; i++) {
  for (let j = 0; j < 500; j++) {
    console.log(j);
    if (j == 3) {
      break;
    }
  }
}
// -> 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...(print 100 次)

若要完全終止 nested loop,則需要使用return關鍵字,並且要使用 return,必須將程式碼放在function

function myFunc() {
  for (let i = 0; i < 100; i++) {
    for (let j = 0; j < 500; j++) {
      console.log(j);
      if (j == 3) {
        return;
      }
    }
  }
}

myFunc();

continue

強制執行循環的下一次迭代,跳過 continue 語句之後的循環內的代碼,開始循環的下一次迭代

for (let i = 0; i < 10; i++) {
  if (i == 3) {  // -> 當i = 3時,下面的console.log(i)會被跳過,強制執行下一個循環
    continue;
  }
  console.log(i);  // -> 0, 1, 2, 4, 5, 6, 7, 8, 9
}

for loop 跑 array

let arr = ["Phoebe", "Darren", "Candy", "Louis"];

for (let i = 0; i < arr.length; i++) {  // -> arr.length要用 < ,不能用 <=
  console.log(arr[i] + " is my friend.");
}

Math Object

Math 是一個 JavaScript 內建物件,具有 數學常數 和 函數 的 屬性 和 方法

常用的 static properties

  • Math.PI

    console.log(Math.PI);  // -> 3.141592653589793
    
  • Math.E

    console.log(Math.E);  // -> 2.718281828459045
    

常用的 static methods

  • Math.pow(x, y) pow -> power

    console.log(Math.pow(3, 2));  // -> 9 (3^2)
    
  • Math.random() return 的值是 [0, 1) ,涵蓋 0 但不含蓋 1,介於 0 ~ 1 間的小數

    console.log(Math.random());  // 介於 0 ~ 1 間的小數
    
  • Math.sqrt(x) 開根號 square root

    console.log(Math.sqrt(2));  // -> 1.4142135623730951
    
  • Math.abs() 絕對值 absolute value

    console.log(Math.abs(-2));  // -> 2
    
  • Math.floor() 向下取整數(無條件捨去)

    console.log(Math.floor(9.999999));  // -> 9
    
  • Math.ceil() 向上取整數(無條件進位)

    console.log(Math.ceil(9.999999));  // -> 10
    

下一篇文章學習進階的JS引擎、無限大、展開運算符與其餘運算符、強制轉型、相等比較。


上一篇
【DAY14】 for、while、do while
下一篇
【DAY16】擴展語法、剩餘參數、型別轉換
系列文
一個月的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言