簡體   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