正在根据 true/false 条件构建对象

Constructing object based on true/false conditions

我通常会根据条件构造其中包含或不包含字段的对象

let data
if(something === true) {
  data = {
    name: 'String',
    something: 'Something'
  }
else {
  data = {
    name: 'String'
  }
}

但这似乎非常 "dirty way to do this",因为每次都需要重新定义数据 + 如果有更多 if 条件,这将变成安静的大块代码。有没有更简洁的方法来实现这个?

只需有条件地向对象添加属性 - 您不需要一次性将整个事物定义为对象文字。

let data = {
    name: 'String'
};
if (something) {
    data.something = 'Something';
}

您可以像这样使用三元运算符:

let data = {
  name: 'String',
  something: (something) ? "Something" : undefined,
}

实际上这应该可行,因为 undefined 是您尝试访问不存在的对象时得到的结果 属性,
但请记住,您要向对象添加可枚举的 属性。

你可以像下面这样使用Object.assign,因为它忽略了非对象参数:

let data
let something = true
data = Object.assign(
    { name: 'String' },
    something && {something: 'Something'}
)

console.log(data)

或者,如果您愿意

something ? {something: 'Something'} : {}