布尔条件设置错误排查:affordItem函数逻辑问题咨询
问题分析与修复方案
你的代码存在几个关键问题,直接导致返回结果和预期完全相反:
核心错误点
- 错误访问数组属性:
items.fruits是一个数组,不能直接通过items.fruits.id或items.fruits.quantity获取属性,必须先定位到匹配itemId的具体水果对象 - 属性名误用:给定数据里根本没有
quantity字段,需要用price和用户的可支付额度count做比较 - 逻辑判断失效:原代码的条件永远无法满足(数组本身没有
id和quantity属性),所以始终返回false,和预期结果完全相反
修复后的代码
function affordItem(items, itemId) { // 找到对应id的水果对象 const targetFruit = items.fruits.find(fruit => fruit.id === itemId); // 存在目标水果时,判断额度是否足够;不存在则返回false return targetFruit ? items.count >= targetFruit.price : false; }
验证逻辑
- 传入
apple时,找到价格为50的苹果,100 >= 50,返回true,符合测试预期 - 传入
orange时,找到价格为200的橙子,100 < 200,返回false,符合测试预期
内容的提问来源于stack exchange,提问作者user19522560
相关产品推荐
相关产品推荐

