基于真/假条件构造对象

时间:2016-06-01 15:24:43

标签: javascript object-literal

我通常构建的对象中包含字段,或者根据条件没有它们

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

但这似乎是一种非常“脏的方式”,因为每次都需要重新定义数据+如果有更多条件,这将成为安静的大块代码。有没有更简洁的方法来实现这一目标?

3 个答案:

答案 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'} : {}