Javascript 如果键的值未定义,如何在对象文字符号中不设置键
我正在使用Redux创建一个RPG角色生成器。在我的减速器中,我希望能够修改齿轮并跟踪这些修改。修改可以有评级,但不一定要有评级 因此,如果评级未定义,我宁愿不记录。那么,如果值未定义,有没有办法不在对象文字符号中添加键呢 gearName将是要修改的齿轮字符串 mod是一个包含mod属性的对象,比如+rating fire resist或其他 评级是表示修改值的数字Javascript 如果键的值未定义,如何在对象文字符号中不设置键,javascript,functional-programming,ecmascript-6,redux,Javascript,Functional Programming,Ecmascript 6,Redux,我正在使用Redux创建一个RPG角色生成器。在我的减速器中,我希望能够修改齿轮并跟踪这些修改。修改可以有评级,但不一定要有评级 因此,如果评级未定义,我宁愿不记录。那么,如果值未定义,有没有办法不在对象文字符号中添加键呢 gearName将是要修改的齿轮字符串 mod是一个包含mod属性的对象,比如+rating fire resist或其他 评级是表示修改值的数字 const purchaseGear = (state, action) => { const { gearName,
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)
}
}
}
提出以下模式:
const cond=假;
常量对象={
…条件{a:1}:{},
b:2,
};
//{b:2}
所以在你的情况下会是这样的
…评级!==未定义?{评级:评级}:{}
请记住,此模式仅在发动机已支持的情况下工作。它在Chrome v58中工作,但我还没有在其他平台上进行测试。我在规范中没有看到任何方法可以做到这一点:它是一个包含零对或多对属性键和相关值的列表,用花括号括起来。这的总体目标是什么?一般来说,最好保持对象的形状一致,以提高性能。根据值更改键是否存在可能会降低代码速度。使用Object.assign的技巧是Object.assign{},rating&{rating},利用Object.assign忽略null/false/undefined参数这一事实,我想提到的是制作更多的简化程序,它们在应用程序状态的较小部分上运行。这些减速机可以组合成根减速机使用,就像一个魅力。非常感谢。而且它也非常优雅。