javascript - 有没有办法在具有三元运算符的javascript对象中同时初始化键和值?
问题描述
例如,我想要一个根据 a==0 具有不同键值的 javascript 对象:
var v=a==1?{
"a":"1",
}:{
"b":"2",
};
我想简化为:
var v={
a==1?("a":"1"):("b":"2"),
};
因此对于更多条件:
var v={
a==1?("a":"1"):("b":"2"),
c==1?("c":"3"):("d":"4"),
.
.
.
"commonKey1":"commonValue1",
"commonKey2":"commonValue2"
};
哪个使用三元运算符同时初始化键和值,但我尝试了上面的语法并且它不起作用,是否有任何正确的语法可以做到这一点?
解决方案
当有多个条件和共同值时,Object.assign
可能是最清晰的方法:
const a = 2;
const c = 1;
const v = Object.assign({ commonKey1: 'commonValue1', commonKey2: 'commonValue2' },
a==1?{"a":"1"}:{"b":"2"},
c==1?{"c":"3"}:{"d":"4"}
);
console.log(v);
另一种可能性(看起来更丑的 IMO)是将条件运算符返回的对象传播到父对象中:
const a = 1;
const v = {
foo: 'bar',
...(a==1? {"a":"1"}:{"b":"2"})
};
console.log(v);
推荐阅读
- node.js - NestJS - 将标头发送到客户端后无法设置标头
- node.js - 管道失败后无法发送数据响应
- javascript - 数字为 999999999999999 时的计算
- javascript - video.muted 上的 Try-Catch 语句在 Chrome 上没有发现任何错误
- java - 想在 SpringBoot 中获取静态资源文件,部署为 .jar?
- java - 如何创建可重用的即时(非持续时间)Java FlightRecorder JFR 事件?
- kotlin - 如何使用集合中的值?火力基地
- wordpress - htaccess 保护 Wordpress 登录但不保护 Woocommerce
- reactjs - 微前端和微服务
- c# - Bot framework V4 500 - 部署到 azure 时出现内部服务器错误(使用 Ngrok/本地)