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

课程作业isPartyViable函数测试失败:满足条件却返回false

问题:isPartyViable函数在条件满足时无法返回true

场景说明

派对可举办需同时满足两个条件:

  • 至少有5人出席
  • 随喜购票总收入至少达到£100

isPartyViable函数接收宾客对象数组作为参数,每个对象包含paidForTicket属性(代表宾客愿意支付的购票金额),当两个条件都满足时返回true,否则返回false。

我的代码

function isPartyViable(guests) {
    let totalMoney = 0;
    let totalGuests = 0;

    for (let key in guests){
        totalMoney += guests[key].paidForTickets
        totalGuests += 1
    }
    if (totalMoney >= 100 && totalGuests >= 5 ){
        return true
    }
    return false
}

测试反馈

3个测试通过,1个测试失败

出席人数不足时返回false

✓  做得好!

出席人数不足但筹款足够时返回false

✓  做得好!

购票筹款不足时返回false

✓  做得好!

宾客数足够且筹款足够时返回true

✕ AssertionError: expected false to equal true

问题修复

你的代码存在两个关键错误:

  1. 属性名拼写错误:场景中明确宾客对象的属性是paidForTicket,但代码中误写为paidForTickets(多了末尾的s),导致totalMoney累加时始终为NaN,无法满足totalMoney >=100的条件。
  2. 宾客数统计冗余且有风险:用for...in遍历数组并累加totalGuests,不如直接使用数组的length属性获取宾客数量,既简洁又避免遍历到非元素属性的风险。

修复后的代码:

function isPartyViable(guests) {
    const totalGuests = guests.length;
    let totalMoney = 0;

    for (const guest of guests) {
        totalMoney += guest.paidForTicket;
    }

    return totalGuests >= 5 && totalMoney >= 100;
}

或者用更简洁的数组reduce方法计算总金额:

function isPartyViable(guests) {
    const totalGuests = guests.length;
    const totalMoney = guests.reduce((sum, guest) => sum + guest.paidForTicket, 0);
    return totalGuests >= 5 && totalMoney >= 100;
}

内容的提问来源于stack exchange,提问作者Muhammad Yaseen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:42:57