在一个级别的场景中,由于(在您的情况下)null
也是一个不希望的结果,因此似乎您最好不要使用lodash,而只需执行以下操作:
Translated Content:
在一个级别的场景中,由于(在您的情况下)null
也是一个不希望的结果,因此似乎您最好不要使用lodash,而只需执行以下操作:
room.nickname || room.name
在您的情况下,实际上缩短并达到相同的结果是可行的。
您还可以执行以下操作:
let name = _.defaultTo(room.nickname, room.name)
_.defaultTo 保护你免受 null、NaN 和 undefined
的影响。
因此,在上面的情况下,你会得到 obj.name
,但如果你设置了 nickname
,那么你将得到它。
在具有长路径的情况下,你可以像这样使用 _.isEmpty
在自定义函数中:
const getOr = (obj, path, def) => {
var val = _.get(obj, path)
return _.isEmpty(val) ? def : val
}
根据_.isEmpty文档,这将处理您的null
以及其他场景。
然后,您可以简单地使用如下:
getOr(room, 'nickname', room.name)
并且你可以嵌套它:
getOr(room, 'nickname', getOr(room, 'name', 'N/A'))
room?.nickname ?? name
。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator - foxiris