如何使用lodash处理空值

时间:2018-10-17 13:02:35

标签: javascript 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中有什么功能可以解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以依靠null, undefined, etc. are falsy这一事实,并使用||运算符。

_.get(room, 'nickname') || _.get(room, 'name')

答案 1 :(得分:0)

由于null虚假,您可以

_.get(room, 'nickname') || 'name'

.get仅在结果为undefined

时返回第三个参数。

请参阅:Docs

答案 2 :(得分:0)

在一种情况下,由于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'))