正在根据 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'} : {}
我通常会根据条件构造其中包含或不包含字段的对象
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'} : {}