You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Google式长度转换器的冗余if/else代码?

优化长度转换器代码的方案

你的代码通过大量if/else语句实现单位转换,虽然功能正常,但扩展性差且冗余。推荐使用基准单位转换法,将所有单位统一转换为基准单位(比如米),再从基准单位转换为目标单位,这能大幅简化代码。

具体实现步骤:

  1. 定义单位转换因子:创建一个对象,存储每个单位与米的换算关系(即1个该单位等于多少米)。
  2. 统一转换逻辑:先将输入值转为米,再从米转为目标单位,无需逐个处理单位对。

优化后的代码:

const input = document.getElementById("input");
const inputType = document.getElementById("inputType");
const output = document.getElementById("output");
const outputType = document.getElementById("outputType");

// 存储各单位与米的换算关系:1单位 = X米
const unitFactors = {
  "m": 1,
  "Cm": 0.01,
  "Mm": 0.001,
  "Km": 1000,
  "mm": 1e-6, // 微米
  "Nm": 1e-9, // 纳米
  "Mi": 1609, // 英里
  "Y": 0.9144, // 码(对应原代码1m≈1.094码的近似值)
  "f": 0.3048, // 英尺(对应原代码1m≈3.281英尺)
  "In": 0.0254, // 英寸(对应原代码1m≈39.37英寸)
  "NM": 1852 // 海里
};

const finalResult = () => {
  const inputValue = Number(input.value);
  
  // 处理非数字输入
  if (isNaN(inputValue)) {
    output.value = "";
    return;
  }

  const fromUnit = inputType.value;
  const toUnit = outputType.value;

  // 先转成米,再转成目标单位
  const meters = inputValue * unitFactors[fromUnit];
  const result = meters / unitFactors[toUnit];

  output.value = result;
};

优势:

  • 代码简洁:从450行缩减到几十行,逻辑清晰。
  • 扩展性强:新增单位只需在unitFactors中添加一条记录,无需修改转换逻辑。
  • 维护方便:换算因子集中管理,修改精度或调整数值只需改一处。

内容的提问来源于stack exchange,提问作者Sarkis Helvajian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:48:22