仅更新非空字段|对象传播

时间:2018-09-07 18:06:43

标签: javascript ecmascript-6

我想知道像这样的东西是否有一个衬里

git fetch -n <remote> <sourceBranchOnP1>:<targetBranchOnP>.

我只是检查空的firstName,lastName等。如果我有几个这样的字段怎么办?

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


git remote remove P1
git remote remove P2

如果我的字段为空,是否存在可能告诉对象散布或其他任何内容不更新的替代方法?

2 个答案:

答案 0 :(得分:1)

并非如此,但是您可以使用一个小助手:

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

您可以这样写:

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

答案 1 :(得分:0)

您可以使用

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

或类似的对象传播语法:

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

虚假值将被忽略,不会导致任何属性的创建。