Javascript 如果键的值未定义,如何在对象文字符号中不设置键

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,

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

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

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

mod是一个包含mod属性的对象,比如+rating fire resist或其他

评级是表示修改值的数字

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参数这一事实,我想提到的是制作更多的简化程序,它们在应用程序状态的较小部分上运行。这些减速机可以组合成根减速机使用,就像一个魅力。非常感谢。而且它也非常优雅。