我想创建一个对象,有条件地添加成员。
简单的方法是:
var a = {};
if (someCondition)
a.b = 5;
现在,我想写一个更习惯的代码。我在努力:
a = {
b: (someCondition? 5 : undefined)
};
但是现在,b是a的一个元素,它的值是未定义的。这不是我们想要的结果。
有没有方便的解决办法?
更新
我寻求一个解决方案,可以处理一般情况与几个成员。
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),
};
简单的es6解决方案
带有(&)的单一条件
const didIPassExam = true
Const study = {
星期一:“写作”,
周二:“阅读”,
/*有条件检查,如果为真,则增加周三学习*/
...(didIPassExam &&{星期三:'睡得开心'})
}
console.log(研究)
带有(?):)
Const分数= 110
//const得分= 10
Const storage = {
答:10
b: 20,
...(得分> 100 ?{c: 30}: {d:40})
}
console.log(存储)
解释
假设你有一个这样的存储对象
const storage = {
a : 10,
b : 20,
}
你想在此基础上有条件地增加一个道具
const score = 90
如果分数大于100,您现在希望将道具c:30添加到存储区。
如果score小于100,则需要将d:40添加到存储中。你可以这样做
const score = 110
const storage = {
a:10,
b:20,
...(score > 100 ? {c: 30} : {d:40})
}
上面的代码给出存储为
{
a: 10,
b: 20,
c: 30
}
如果分数= 90
然后你得到存储
{
a: 10,
b: 20,
d: 40
}
Codepen例子