javascript - 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)
以及为此制作某种辅助功能,
但我想知道是否有办法使用内联对象表示法来做到这一点?
解决方案
您可以使用条件运算符传播对象。
{}
是一个中性值。
var myObj = {
someProp: 2,
...(someBool ? {} : { someOtherProp: 3 })
}
推荐阅读
- php - .htaccess 文件的问题
- cygwin - 如何将我的 cygwin 安装转移到另一台计算机并避免资源不可用错误?
- amazon-web-services - ECS 应用服务似乎无法连接到 mongo 服务
- node.js - 如果在 lambda 节点场景中发现错误,则继续 promise.all 循环
- sql - 没有 TOP 函数的 SQL JOIN 单值
- mysql - Node JS 变量 SQL 查询结果
- python - 如何在 Django 中访问已上传的 Docx 文件以搜索所需的单词?
- docker - 无法运行 docker commit,空间不足
- python - Python使用websocket API将dht22传感器数据发送到网页
- jquery - 使用mousemove时如何阻止div向上移动?