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

makeGuestList函数实现问题:未保留原对象其他属性导致断言失败

makeGuestList函数实现问题:未保留原对象其他属性导致断言失败

嘿,我一眼就看出问题所在啦——你的makeGuestList函数现在只返回了拆分后的firstName和lastName,完全丢掉了原对象里的其他属性,这就是断言失败的核心原因!

咱们拆解下问题:你当前的代码里,return语句直接创建了一个仅包含firstName和lastName的新对象,原对象里像age这类额外属性根本没被纳入进去。而测试用例的要求是保留原对象所有其他属性,仅把name替换成拆分后的两个属性,所以才会出现expected { firstName: 'Ada', …(1) } to deeply equal { firstName: 'Ada', …(3) }的错误——这里的…(1)表示你的返回结果只有1个额外属性,而测试期望有3个,差的就是原对象里没被保留的那些属性。

那怎么解决呢?咱们用ES6的对象解构和展开运算符就能轻松搞定,既完成name拆分,又完美保留其他所有属性:

function makeGuestList(person) {
  // 从原对象中解构出name,剩下的所有属性自动存入rest对象
  const { name, ...rest } = person;
  // 拆分name字符串得到firstName和lastName
  const [firstName, lastName] = name.split(" ");
  // 合并rest里的原属性和新拆分出的属性,返回最终对象
  return { ...rest, firstName, lastName };
}

咱们验证下修改后的效果:

  • 调用makeGuestList({ name: "Hannah Fry", age: 46 })时,会返回{ age: 46, firstName: "Hannah", lastName: "Fry" },完全符合测试预期;
  • 测试你自己的const guest = { name: "Ada Lovelace" },返回的是{ firstName: 'Ada', lastName: 'Lovelace' },如果之后给guest添加其他属性比如age: 36,函数也会自动保留这个属性。

这样修改后,既完成了拆分name的需求,又完美保留了原对象的所有其他属性,断言自然就能通过啦!

备注:内容来源于stack exchange,提问作者Thomas Mckillen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:35:28