В сценарии с одним уровнем и, поскольку (в вашем случае) null
также является нежелательным результатом, кажется, что вам лучше без лишнего, и просто сделайте это:
room.nickname || room.name
На самом деле он будет короче и достигнет того же результата в вашем случае.
Вы также можете сделать:
let name = _.defaultTo(room.nickname, room.name)
_. DefaultTo длязащищает вас от null, NaN and undefined
Так что в приведенном выше случае вы получите obj.name
, но если у вас есть набор nickname
, вы получите это.
В сценариях, когда у вас есть длинныйпуть, который вы можете использовать _.isEmpty
в пользовательской функции, подобной этой:
const getOr = (obj, path, def) => {
var val = _.get(obj, path)
return _.isEmpty(val) ? def : val
}
Это будет обрабатывать ваши null
, а также другие сценарии согласно _. isEmpty документам.
Вы можете просто использовать как:
getOr(room, 'nickname', room.name)
И вы можете вложить его:
getOr(room, 'nickname', getOr(room, 'name', 'N/A'))