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

如何使用展开运算符有条件更新对象键值

实现方案

你原代码里的location && location : ''是语法错误,无法实现预期逻辑。要满足「仅原对象存在location键时清空对应值、不存在则不新增该属性」的需求,可通过条件展开的写法实现:

const resetPerson = {
  ...person,
  name: '',
  age: '',
  ...(Object.hasOwn(person, 'location') ? { location: '' } : {})
};

逻辑说明

  • 用Object.hasOwn(person, 'location')判断person自身是否存在location属性,比直接写person.location做判断更严谨,不会因为location的值是空字符串、null、0这类假值出现误判。
  • 判断成立时展开{ location: '' },覆盖原对象的location值为空;判断不成立时展开空对象,不会给新对象追加location属性,完全符合需求。
  • 如果你使用TypeScript,不建议随意给变量标注any类型,会丢失类型校验能力,可直接基于person的类型自动推导resetPerson的类型。

内容的提问来源于stack exchange,提问作者Nagasai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:48:10