例如,我希望一个JavaScript对象根据a == 0设置不同的键值:
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"
};
使用三元运算符同时初始化键和值,但是我尝试了上面的语法,但是它不起作用,是否有任何正确的语法可以做到这一点?
答案 0 :(得分:0)
当存在多个条件和通用值时,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);
答案 1 :(得分:-1)
恐怕没有。因为可以将对象用作键,所以如果这样编写,计算机将无法识别您真正想要的东西。例如:
var t = {name:'y'};
var m = {t};
您错过了价值吗?
var m = {t:'expert'}
或者您只想m = t
var m = {name:'y'}
可能会感到困惑。