JavaScript仅在满足条件时才向内联对象插入新属性

JavaScript仅在满足条件时才向内联对象插入新属性,javascript,object,indexing,ecmascript-6,Javascript,Object,Indexing,Ecmascript 6,我知道使用ES6 JavaScript对象,您可以使用[]动态地将变量声明为对象键,例如: {[2+2]:“四个!”} 给出输出{“4”:“four!”} 问题是,是否可以使用类似的方法通过变量等内联方式添加整个属性?意思是,假设我有以下测试对象: var myObj = { someProp: 2, someOtherProp: 3 //only add this prop if a condition is met } 如果满足某个条件,我是否可以在内联对象中为someOt

我知道使用ES6 JavaScript对象,您可以使用
[]
动态地将变量声明为对象键,例如:

{[2+2]:“四个!”}

给出输出
{“4”:“four!”}

问题是,是否可以使用类似的方法通过变量等内联方式添加整个属性?意思是,假设我有以下测试对象:

var myObj = {
    someProp: 2,
    someOtherProp: 3 //only add this prop if a condition is met
}
如果满足某个条件,我是否可以在内联对象中为
someOtherProp
编写任何内容,只将其添加到对象中?例如(伪代码),类似这样的东西

var myObj = {
    someProp: 2,
    [someBool ? null : "someOtherProp: 3"] //only add this prop if a condition is met
}
会给出输出(考虑到someBool是真的),如上所述,但是如果
someBool
是假的,它会给我

var myObj = {
    someProp: 2
}
?

我知道我以后可以简单地使用[]索引器将属性添加(或删除)到(/from)对象中,如

someBool && (myObj["someOtherProp"] = 3)
并为此制作一些辅助函数


但是我想知道是否有一种方法可以使用内联对象表示法来实现这一点?

您可以使用条件运算符来扩展对象

{}
是中性值

var myObj = {
    someProp: 2,
    ...(someBool ? {} : { someOtherProp: 3 })
}

可以使用条件运算符扩展对象

{}
是中性值

var myObj = {
    someProp: 2,
    ...(someBool ? {} : { someOtherProp: 3 })
}

请在duplicate@adiga是的,那一个回答得很好,检查一下duplicate@adiga是的,一个人回答了它,完美地说,用
..(someBool&&&{someOtherProp:3})
可以更短,用
..(someBool&&{someOtherProp:3})