You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:50:16