[英]How to handle null values with lodash
这是简单的json
{
home: 68
id: 1
name: "RL Conference Room"
nickname: null
setpoint: 32.34
sleep: 58
}
当我得到空键时,这个 lodash 函数就起作用了
_.get(room, 'keyName', 'whenKeyNotFound')
但是正如你在上面看到的,我在nickname
得到了空值所以我想用name
替换它,但这不起作用。
_.get(room, 'nickname', 'name')
lodash 中是否有任何功能可以解决问题?
谢谢!!!
您可以依赖null
、 undefined
等为 falsy 的事实,并使用||
操作员。
_.get(room, 'nickname') || _.get(room, 'name')
在一个级别的场景中,因为(在你的情况下) null
也是一个不受欢迎的结果,似乎你没有 lodash 更好,只需这样做:
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
}
这将根据_.isEmpty docs处理您的null
以及其他场景。
然后您可以简单地用作:
getOr(room, 'nickname', room.name)
你可以嵌套它:
getOr(room, 'nickname', getOr(room, 'name', 'N/A'))
由于null
是假的,你可以这样做
_.get(room, 'nickname') || 'name'
如果结果undefined
.get
仅返回第三个参数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.