Обновлять только непустые поля | Распространение объекта - PullRequest
0 голосов
/ 07 сентября 2018

Мне было интересно, есть ли один лайнер для чего-то вроде

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

Я просто проверяю пустые firstName, lastName и так далее. Что если у меня есть несколько таких полей?

Так что я не хочу обновлять ни одно из моих полей пустыми значениями, если я напишу

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

Любая возможная альтернатива, которая может указать распространение объекта или что-либо еще, чтобы не обновлять, если мое поле пусто?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Вы можете использовать

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

или аналогичный с синтаксисом распространения объекта:

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

Ложные значения будут игнорироваться и не приведут к созданию каких-либо свойств.

0 голосов
/ 07 сентября 2018

Не совсем, однако вы можете использовать маленький помощник:

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

Это позволяет вам написать:

updateUser = assignDefined({...userData}, { firstName, lastName, password });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...