坚持Javascript中的对象

时间:2015-03-15 23:57:52

标签: javascript javascript-objects

说明

完成canIGet功能。这个功能应该:

  • 拿两个论点:
  • item:代表用户想要购买的内容
  • money:代表用户拥有多少美元
  • 如果用户可以根据下面的价格表支付给定的商品,则返回true,否则返回false:
    • 'MacBook Air' - 999美元
    • MacBook Pro' - 1299美元
    • 'Mac Pro' - 2499美元
    • 'Apple Sticker' - $ 1
  • 如果false不在上述Apple产品列表中,则返回item

      

    使用0'if'条件执行此操作! (提示:将上面的价格表放在一个对象中)。

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控制台。但是,当我通过终端(mocha测试)进行测试时,它会失败并产生以下结果:

终端结果

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

返回语句也有翻转逻辑。 macItems.item应该具有比传入的钱更低的值以返回true,即空气成本999并且我有1000个钱,这将等于999> = 1000,并且这将返回false。它应该被翻转以返回macItems [item]&lt; = money

调试信息的功能

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;
};