修复cutestCat函数:返回可爱度最高的猫咪对象
修复cutestCat函数以返回最高可爱度的猫咪对象
原代码存在几个关键问题,导致无法返回预期的猫咪对象:
- 初始
cutest未赋值,第一次比较时cat > cutest会因cutest为undefined出现逻辑错误 - 比较逻辑错误:直接用猫咪对象和
cutest(数值/undefined)比较,而非两者的cuteness属性 - 更新
cutest时只存储了可爱度数值,而非整个猫咪对象,最终返回的是数字而非对象
修复后的代码如下:
function cutestCat(cats) { // 初始化为第一个猫咪对象,避免undefined的比较问题 let cutest = cats[0]; let i = 1; // 从第二个元素开始遍历 debugger while (i < cats.length) { const cat = cats[i]; // 比较当前猫咪的cuteness和cutest的cuteness if (cat.cuteness > cutest.cuteness) { cutest = cat; // 存储整个猫咪对象 } i++; } return cutest; } const cats = [ { name: 'Fluffy', cuteness: 9 }, { name: 'Princess', cuteness: 6 }, { name: 'Tiger', cuteness: 7 }, { name: 'Indie', cuteness: 5 }, ] console.log(cutestCat(cats)); // { name: 'Fluffy', cuteness: 9 }
关键修复说明:
- 初始化
cutest:直接将cutest初始化为数组的第一个猫咪对象,避免和undefined比较的问题,同时确保初始值是有效的猫咪对象 - 调整遍历起始索引:因已初始化第一个元素,从索引1开始遍历即可,减少一次不必要的比较
- 修正比较逻辑:明确比较两个猫咪对象的
cuteness属性值,而非对象本身 - 更新
cutest的赋值:找到更可爱的猫咪时,将整个对象赋值给cutest,确保最终返回完整的猫咪对象
如果需要兼容空数组的边界情况,可以添加判断:
function cutestCat(cats) { if (!cats.length) return null; // 处理空数组场景 let cutest = cats[0]; let i = 1; debugger while (i < cats.length) { const cat = cats[i]; if (cat.cuteness > cutest.cuteness) { cutest = cat; } i++; } return cutest; }
内容的提问来源于stack exchange,提问作者UBO
相关产品推荐
相关产品推荐

