代码之家  ›  专栏  ›  技术社区  ›  HalfWebDev

仅更新非空字段|对象排列

  •  0
  • HalfWebDev  · 技术社区  · 6 年前

    我想知道是否有一个单一的班轮是可能的东西,如

            let updatedUser;
            if (firstName) {
                updatedUser = { ...userData, firstName };
            }
            if (lastName) {
                updatedUser = { ...userData, lastName };
            }
            if (password) {
                updatedUser = { ...userData, password };
            }
    

    我只是在检查名字,姓氏等等。如果我有几个这样的领域呢?

    所以我不想在写时用空值更新任何字段

    updatedUser = { ...userData, firstName, lastName, password  };
    

    2 回复  |  直到 6 年前
        1
  •  0
  •   Bergi    6 年前

    const updatedUser = Object.assign({},
         userData,
         firstName && {firstName},
         lastName && {lastName},
         password && {password}
    );
    

    或类似的对象扩展语法:

    const updatedUser = {
         ...userData,
         ...firstName && {firstName},
         ...lastName && {lastName},
         ...password && {password}
    };
    

    错误值将被忽略,不会导致创建任何属性。

        2
  •  1
  •   Jonas Wilms    6 年前

    不是,但是你可以用一个小助手:

     const assignDefined = (target, props) =>
       Object.entries(props).forEach(([k, v]) => v && (target[k] = v));
    

    updateUser = assignDefined({...userData}, { firstName, lastName, password });