卡在 Javascript 中的对象上

Stuck on Objects in Javascript

本文关键字:对象 Javascript 卡在      更新时间:2023-09-26

说明

完成canIGet功能。此函数应:

  • 取两个参数:
  • item:代表用户想要购买的东西
  • money:表示用户拥有多少美元
  • 如果用户可以根据下面的价格图表买得起给定的项目,则返回true,否则返回 false:
    • "MacBook Air" - 999 美元
    • MacBook Pro' - $1299
    • "Mac Pro" - 2499 美元
    • "苹果贴纸" - 1 美元
  • 如果item不在上述 Apple 产品列表中,则返回false

    在 0 个"如果"条件下执行此操作!(提示:将上面的价格表放在一个对象中)。

canIGet('MacBook Air', 100) // returns false
canIGet('MacBook Air', 1000) // returns true


我的代码

canIGet = function(item, money) {
    var macItems = {
        "MacBook Air": 999,
        "MacBook Pro": 1299,
        "Mac Pro": 2499,
        "Apple Sticker": 1
    }

    return macItems.item >= money;
};

这将通过 JavaScript 控制台。但是,当我通过终端(摩卡测试)对其进行测试时,它会失败并产生以下结果:

终端结果

canIGet
✓ should be defined
1) returns the correct results for MacBook Air
2) returns the correct results for MacBook Pro
3) returns the correct results for Mac Pro
4) returns correct results for Apple Sticker
✓ returns false for non-Apple products

您可能希望使用括号表示法,因为您要传递字符串作为属性引用器:

return macItems[item] <= money;

如果您想测试负担能力,还要确保使用 <=

function canIGet(item, money) {
    return {
        "MacBook Air": 999,
        "MacBook Pro": 1299,
        "Mac Pro": 2499,
        "Apple Sticker": 1
    }[item] <= money;
}
console.log( canIGet("MacBook Air", 998) ); // false

如果您在解决任何类型的问题时遇到问题,请始终对其进行调试。简单的方法是使用 console.log()

问题是macItems.item不起作用,你需要使用macItems[item]表示法

返回语句也有翻转的逻辑。 macItems.item 的价值应该低于传入返回 true 的钱,即 Air 成本 999,我有 1000 钱,等于 999>= 1000,这将返回 false。它应该被翻转以返回macItems[item] <=钱

带有调试信息的函数

canIGet = function(item, money) {
console.log(item)
console.log(money)
var macItems = {
        "MacBook Air": 999,
        "MacBook Pro": 1299,
        "Mac Pro": 2499,
        "Apple Sticker": 1
    }
    console.log(macItems[item])
    return macItems[item] <= money;
};