使用非未定义属性更新javascript对象

时间:2017-08-27 09:19:32

标签: javascript underscore.js

我有一个更新对象的功能:

_.each(user, function(value, key, obj) {
  if (user[key] !== undefined) {
    self.user[key] = user[key];
  }
});

它让我更新这样的用户:

let user = new User();
user.verified = true;
self.sessionService.updateSession(user);

我只需要通过检查未定义来指定要更新的属性,这可以简化或写入更高效吗?

2 个答案:

答案 0 :(得分:1)

你可以使用下划线做这样的事情:

_.assign(self.user, _.omit(user, _.isUndefined))

这可以通过创建一个对象来实现,其中使用omitisUndefined谓词省略所有具有未定义值的键。

然后,此对象与assign一起使用以更新self.user对象。

答案 1 :(得分:0)

我不确定这是否是您需要的答案,但如果变量未定义/ null /""您可以将变量设置为新值。像这样:

myVar = myVar || newValue;

如果定义了myVar,将保留旧值。如果没有,它将被分配给newValue。