首页 > 解决方案 > JavaScript 仅在满足条件时才向内联对象插入新属性

问题描述

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

{[2 + 2]: "four!"}

给出输出{"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
}

??

我知道我可以稍后使用 [] 索引器简单地向(/从)对象添加一个属性(或删除一个),例如

someBool && (myObj["someOtherProp"] = 3)

以及为此制作某种辅助功能,

但我想知道是否有办法使用内联对象表示法来做到这一点?

标签: javascriptobjectindexingecmascript-6

解决方案


您可以使用条件运算符传播对象。

{}是一个中性值。

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

推荐阅读