如果未定义键的值,如何在对象文本表示法中设置键



我正在使用Redux创建一个RPG角色生成器。在我的减速器中,我希望能够修改齿轮并跟踪这些修改。修改可以有评级,但不一定必须有评级。

因此,如果评级未定义,我宁愿不记录。那么,如果值未定义,有没有办法不在对象文字表示法中添加键?

gearName 将是要修改的齿轮的字符串。

mod 是一个包含有关 Mod 的属性的对象,例如 +评级耐火性或其他什么。

评级是一个数字,表示修改的值。

const purchaseGear = (state, action) => {
const { gearName, mod, rating } = action.parameter;
switch (action.type) {
case MOD_GEAR:
return {
...state,
[gearName]: {
...state[gearName],
mods: {
...state[gearName].mods,
[mod.name]: {
...mod,
rating
}
},
cost: mod.cost * (rating || 1)
}
}
} 

Axel Rauschmayer在 2ality.com 上提出了以下模式:

const cond = false;
const obj = {
...(cond ? {a: 1} : {}),
b: 2,
};
// {b: 2}

所以在你的情况下,它会是这样的

...(rating !== undefined ? {rating: rating} : {})

请记住,仅当引擎已经支持对象休息/扩展建议时,此模式才有效。它可以在Chrome v58中工作,但我还没有在其他平台上进行测试。

最新更新