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

JS中使用for循环计算小费无法返回正确结果,求技术解答

数组小费计算函数修复

你的代码存在几个关键问题,导致无法返回正确结果:

  • 函数无返回值:calcTip函数没有用return返回计算后的小费数组,调用后得到的是undefined
  • 条件逻辑错误:第二个else if的判断bill[index] < 50 && bill[index] > 300永远不会成立,没有数字能同时小于50且大于300,应该覆盖所有其他情况
  • 计算结果未收集:仅执行乘法操作但未将结果存储,等于没有保留计算值

以下是修正后的代码:

let arr = [225, 555, 44];

function calcTip(bills) {
    // 创建新数组存小费结果,避免修改原数组
    const tips = [];
    for (let index = 0; index < bills.length; index++) {
        const bill = bills[index];
        if (bill > 50 && bill < 300) {
            tips.push(bill * 0.15);
        } else {
            // 用else覆盖所有不符合15%小费的情况
            tips.push(bill * 0.20);
        }
    }
    // 返回计算好的小费数组
    return tips;
};

const tip = calcTip(arr);
console.log(tip); // 输出: [33.75, 111, 8.8]

你注释掉的箭头函数是单个账单的计算逻辑,也可以结合数组map方法简化代码,写法更简洁:

let arr = [225, 555, 44];

const calcTip = bill => bill > 50 && bill < 300 ? bill * 0.15 : bill * 0.20;
// 用map遍历数组,对每个元素应用小费计算
const tips = arr.map(calcTip);
console.log(tips); // 输出同样是 [33.75, 111, 8.8]

内容的提问来源于stack exchange,提问作者Thiago Marvin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:45