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

JavaScript对象内条件传入键值对未生效问题求解

问题原因

你当前写法的核心问题是:对象展开运算符...仅能展开普通对象来新增键值对,你写的...(purpose === 'Consolidation' && acknowledgement)逻辑执行后返回的是字符串acknowledgement,不属于可被对象正确展开的结构。如果条件不成立时返回布尔值false,展开原始类型不会往目标对象上新增任何属性;如果条件成立,展开字符串会生成0: "a"、1: "c"这类以数字为键的异常属性,完全不符合你的预期。

正确实现方案
  • 写法1:条件展开完整对象(最常用)
    把要插入的键值对先包裹成对象,再配合三目运算符做条件判断:
const eligibility = {
  // utm values
  src,
  traffic_source,
  utm_campaign,
  utm_content,
  utm_medium,
  utm_source,
  // 条件成立时展开包含目标键值对的对象,不成立时展开空对象
  ...(purpose === 'Consolidation' ? { acknowledgement } : {}),
}

上述逻辑中,条件成立时会展开{ acknowledgement: 'acknowledgement' },给eligibility对象新增对应属性;条件不成立时展开空对象,不会新增任何属性,完全符合需求。

  • 写法2:对象声明后单独条件赋值
    如果不习惯条件展开的写法,也可以拆分逻辑实现:
const eligibility = {
  // utm values
  src,
  traffic_source,
  utm_campaign,
  utm_content,
  utm_medium,
  utm_source,
}
// 条件成立时单独给对象赋值
if (purpose === 'Consolidation') {
  eligibility.acknowledgement = acknowledgement
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:36:03