我正在寻求像stackoverflow和谷歌这样的解决方案,但这是 这个想法
a = {
b: (conditionB? 5 : undefined),
c: (conditionC? 5 : undefined),
d: (conditionD? 5 : undefined),
e: (conditionE? 5 : undefined),
f: (conditionF? 5 : undefined),
g: (conditionG? 5 : undefined),
};
但我不明白这...它在我想创建的nodejs中不起作用 对象a里面有很多对象,但是如果那些对象在表单中发送 由客户
答案 0 :(得分:2)
也许你想要的是使用数组索引表示法吗?
a= {};
if(bla) a.b = "go";
答案 1 :(得分:1)
试试这个:
var a = {};
if(conditionB) {
a['b'] = 5;
}
或
if(conditionB) {
a.b = 5;
}
答案 2 :(得分:1)
这可以通过两种方式实现。
您可以为每个条件属性使用if语句:
var a = {};
if(conditionb){
a.b = 5;
}
或者,如果您不想为每个属性创建一个if语句,那么您可以使用在问题中显示的符号来分配属性,然后在循环中删除不必要的符号:
a = {
b: (conditionB? 5 : undefined),
c: (conditionC? 5 : undefined),
d: (conditionD? 5 : undefined),
e: (conditionE? 5 : undefined),
f: (conditionF? 5 : undefined),
g: (conditionG? 5 : undefined),
};
for(var i in a){
if(a[i] === undefined){
delete a[i];
}
}
答案 3 :(得分:0)
你可以试试这个,
var dog = d;
var myObject = {};
myObject['a']=(1<2)? 1 : 2;
myObject['b']=(1<2)? 1 : 2;
myObject['c']=(1<2)? 1 : 2;
myObject[dog]=(1<2)? 1 : 2;
以防您动态创建属性。
答案 4 :(得分:0)
您可以使用ES2018做到这一点
a = {
...(conditionB? { b : 5} : {}),
...(conditionC? { c : 5} : {}),
};