JavaScript函数返回异常:预期字符串却得到字符数组问题排查
问题解决:返回字符串而非字符数组
你的问题核心错误出在这行代码:return Object.values(obj.Waldo);
obj.Waldo本身就是目标字符串'unknown',但Object.values()方法的作用是提取对象的所有值并返回数组。当你把字符串传入该方法时,JS会将字符串视为类数组对象(每个字符对应一个数字索引),因此会把字符串拆成单个字符组成的数组返回。
修正后的代码只需直接返回obj.Waldo即可,无需调用Object.values():
function findWaldo(obj) { let keys = Object.keys(obj); if (keys.includes('Waldo')) { return obj.Waldo; // 直接返回键对应的字符串值 } else { return 'Where\'s Waldo?'; } }; // 测试验证 const DC = { 'Bruce': 'Wayne', 'Harley': 'Quinn' } const supernatural = { 'Sam': 'Winchester', 'Dean': 'Winchester', 'Waldo': 'unknown' } console.log(findWaldo(DC)) // 输出: 'Where's Waldo?' console.log(findWaldo(supernatural)) // 输出: 'unknown'
另外,你原本的变量名values实际存储的是对象的键,改成keys更符合语义,不影响功能但可读性更强。
内容的提问来源于stack exchange,提问作者Silverbear
相关产品推荐
相关产品推荐

