我通常构建的对象中包含字段,或者根据条件没有它们
let data
if(something === true) {
data = {
name: 'String',
something: 'Something'
}
else {
data = {
name: 'String'
}
}
但这似乎是一种非常“脏的方式”,因为每次都需要重新定义数据+如果有更多条件,这将成为安静的大块代码。有没有更简洁的方法来实现这一目标?
答案 0 :(得分:3)
只是有条件地向对象添加属性 - 您不需要将整个事物一次性定义为对象文字。
let data = {
name: 'String'
};
if (something) {
data.something = 'Something';
}
答案 1 :(得分:0)
你可以使用像这样的三元运算符:
let data = {
name: 'String',
something: (something) ? "Something" : undefined,
}
实际上这应该有效,因为undefined
是您在尝试访问不存在的对象属性时获得的内容,
但请记住,您正在向对象添加可枚举属性。
答案 2 :(得分:0)
您可以按如下方式使用Object.assign
,因为它会忽略非对象参数:
let data
let something = true
data = Object.assign(
{ name: 'String' },
something && {something: 'Something'}
)
console.log(data)

或者,如果您愿意
something ? {something: 'Something'} : {}