iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
自我挑戰組

Vscode 實作:用 HTML/CSS/JS 打造醫藥健康小工具箱系列 第 10

【Day 10】【Tool 1 實作】TDEE 活動量換算邏輯:switch...case 觀念演練

  • 分享至 

  • xImage
  •  

本篇文章目錄

  1. 前言:TDEE 活動量係數是什麼?
  2. 觀念拆解:如何用 switch...case 進行條件對應?
  3. 代碼優化:為什麼直接把數值寫在 HTML <option value="..."> 更高效?
  4. 結語

一、 前言:TDEE 活動量係數是什麼?

在 Day 09 中,我們順利算出了使用者的 BMR (基礎代謝率)。然而,人不可能整天躺著不動,我們每天上班、走路、運動都會消耗額外的熱量。

TDEE (每日總消耗熱量) 的計算公式為:

TDEE = 基礎代謝率(BMR)× 活動量係數

根據國際公認的哈里斯-本尼迪克特 (Harris-Benedict) 描述,活動量通常分為 5 個等級(從久坐的 1.2 到重度運動的 1.9)。今天我們將探討如何在 JavaScript 中處理這些係數對應,並將最終結果動態更新到馬卡龍 UI 畫面上!
https://ithelp.ithome.com.tw/upload/images/20260923/20184266DqkcuXBJGE.png

二、 觀念拆解:如何用 switch...case 進行條件對應?

在許多程式開發場景中,如果選單傳過來的是字串(例如 "option1", "option2"),我們通常會使用 switch...case 敘述 進行多重條件判斷:

// 假設 HTML 下拉選單傳來的數值是字串代碼
const activityLevel = "light"; // 例如:輕度運動
let activityFactor = 1.2;      // 預設為久坐係數

// 使用 switch...case 判斷活動等級
switch (activityLevel) {
  case "sedentary":
    activityFactor = 1.2;      // 久坐 / 幾乎不運動
    break;
  case "light":
    activityFactor = 1.375;    // 輕度運動(每周 1-3 天)
    break;
  case "moderate":
    activityFactor = 1.55;     // 中度運動(每周 3-5 天)
    break;
  case "active":
    activityFactor = 1.725;    // 重度運動(每周 6-7 天)
    break;
  case "extreme":
    activityFactor = 1.9;      // 極重度運動(高強度勞動/運動員)
    break;
  default:
    activityFactor = 1.2;
}

// 算出 TDEE
const tdee = bmr * activityFactor;

switch...case 非常適合處理擁有多個分支條件的情境,break 能防止程式碼繼續向下「貫穿 (fall-through)」,發揮精準判斷的作用。

三、 代碼優化:為什麼可以直接用 const tdee = bmr * act

雖然 switch...case 非常直覺,但在我們的《馬卡龍醫藥健康工具箱》中,我們採用了更簡潔的方式。

我們直接將係數寫在 HTML 的 <select> 標籤中:

<!-- HTML 選單直接賦予 float 係數值 -->
<select id="activity">
  <option value="1.2">久坐 / 幾乎不運動</option>
  <option value="1.375">輕度活動 (每週運動 1-3 天)</option>
  <option value="1.55">中度活動 (每週運動 3-5 天)</option>
  <option value="1.725">高度活動 (每週運動 6-7 天)</option>
</select>

這樣一來,JavaScript 只需要下面那行程式碼讀取並轉成數字:

/tool1-calculator.js
https://ithelp.ithome.com.tw/upload/images/20260923/20184266lbk8tKtynP.png

就可以簡化成一行
const tdee = bmr * act;
完全不需要寫繁瑣的 switch...case

四、 結語

今天我們不僅學習了 switch...case 在條件對應上的應用,更體會到了如何透過 HTML 語意化設計簡化 JS 邏輯。


上一篇
【Day 09】【Tool 1 實作】BMI 與 BMR 數學計算邏輯:JS 算術運算子與 toFixed() 數值格式化
系列文
Vscode 實作:用 HTML/CSS/JS 打造醫藥健康小工具箱10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言