2017-08-27 36 views
0

我有一個函數來更新對象的JavaScript對象:更新使用非未定義的屬性

_.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); 

我只需要指定屬性這將通過檢查未定義進行更新,這可以簡化或寫入更有效嗎?

+0

那麼你可以使用*值*,如果它已經存在... –

回答

0

我不知道如果這是你需要的答案,但如果它未定義/ null的,你可以設置爲新值的變量/「」是這樣的:

myVar = myVar || newValue; 

如果myVar的定義中,舊的價值將被保留。如果不是,它將被分配給newValue。

+0

不,這是不正確的。 myVar = 0和newValue = 27也會被更新。 expression == false與expression === undefined不一樣 –

1

你可以做這樣的使用下劃線的東西:

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

這是通過創建所有具有未定義值的鍵使用omitisUndefined謂語省略對象。

該對象然後與assign一起使用來更新self.user對象。