繁体   English   中英

如何使用 lodash 处理空值

[英]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 中是否有任何功能可以解决问题?

谢谢!!!

您可以依赖nullundefined等为 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仅返回第三个参数

见: https : //lodash.com/docs/4.17.10#get

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM