首页 > 解决方案 > 有条件地传递键值对不起作用

问题描述

我有和反对我想有条件地传递键值对的地方。由于我不知道的原因,条件没有被触发。在我的对象中。知道为什么吗?我认为问题出在对象结构中?

const src = "test";
const traffic_source ="test1";
const utm_campaign = "test2";
const utm_content = "tes3t";
const utm_medium = "test4";
const utm_source = "test5";
const purpose = "Consolidation";
const acknowledgement = 'acknowledgement';

const eligibility = {
  // utm values
  src,
  traffic_source,
  utm_campaign,
  utm_content,
  utm_medium,
  utm_source,
  ...(purpose === 'Consolidation' && acknowledgement),
}

标签: javascript

解决方案


右边的&&需要是...可以传播到对象中的东西——也就是说,它应该是一个具有acknowledgement属性的对象,而不是一个字符串:

const src = "test";
const traffic_source ="test1";
const utm_campaign = "test2";
const utm_content = "tes3t";
const utm_medium = "test4";
const utm_source = "test5";
const purpose = "Consolidation";
const acknowledgement = 'acknowledgement';

const eligibility = {
  // utm values
  src,
  traffic_source,
  utm_campaign,
  utm_content,
  utm_medium,
  utm_source,
  ...(purpose === 'Consolidation' && { acknowledgement }),
};
console.log(eligibility);

您现有的代码将字符串传播到对象中,导致eligibility不仅包含src,traffic_source等,还包含

0: 'a',
1: 'c',
2: 'k',
3: 'n',
...

因为这些是字符串的属性。


推荐阅读