如何用JavaScript实现无硬编码的出租车阶梯计费功能
实现动态计算出租车费用的JavaScript方案
你可以通过提取规则参数+数学计算的方式替代硬编码分支,这样不仅更灵活,后续调整规则(比如基础时长、加价幅度)也不用改逻辑代码。
核心逻辑拆解
- 基础规则:时长≤180秒时,费用固定为500便士
- 超出部分:每满60秒(不足60秒也按一个区间算)额外加70便士,比如181-240秒加70,241-300秒加140,以此类推
实现代码
function calculateTaxiFare(seconds) { // 把规则参数单独提取出来,方便后续修改 const baseDuration = 180; const baseFare = 500; const interval = 60; const extraPerInterval = 70; if (seconds <= baseDuration) { return baseFare; } // 计算超出基础时长的秒数 const extraSeconds = seconds - baseDuration; // 计算需要加价的区间数(向上取整,不足60秒也算一个区间) const extraIntervals = Math.ceil(extraSeconds / interval); return baseFare + extraIntervals * extraPerInterval; } // 测试用例 console.log(calculateTaxiFare(179)); // 输出500 console.log(calculateTaxiFare(240)); // 输出570(符合示例) console.log(calculateTaxiFare(245)); // 输出640(符合原代码分支逻辑) console.log(calculateTaxiFare(300)); // 输出640(符合示例)
为什么这样写
- 所有规则参数都放在函数开头,后续如果要调整基础时长、加价金额,直接改参数就行,不用动判断逻辑
- 使用
Math.ceil处理超出部分的区间计算,自动覆盖所有时长情况,不用写一堆if-else分支
内容的提问来源于stack exchange,提问作者Vincenzo Chiovaro
相关产品推荐
相关产品推荐

