这是简单的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中有什么功能可以解决这个问题?
谢谢!
答案 0 :(得分:4)
您可以依靠null
, undefined
, etc. are falsy这一事实,并使用||
运算符。
_.get(room, 'nickname') || _.get(room, 'name')
答案 1 :(得分:0)
答案 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'))