[英]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.