獲取資料守衛 為解決取值鏈長導致資料不可信問題

2022-10-10 11:48:10 字數 1110 閱讀 5488

為解決問題:key鏈太長,導致資料獲取不可行問題

例如:let res = ,{}],

//     form:{}

// }}}

},獲取最內層list的長度

之前的寫法:

let len = res.data.config.form_config.list.length

問題:不知道哪個值會丟擲undefined或者null,就會導致程式出問題

用函式守衛獲取:

let len = $catch(res, 'data.config.form_config.list.length',0)

獲取到了就返回獲取值,未獲取到返回預設值0,這樣就能保證資料不對的情況下程式正常執行。

/** *

* * @param data 取值目標,需為物件

* @param keystr 取值key鏈(例:form_config.list.0.name),陣列取值同樣用點

* @param [def=''] 取值出錯時返回的預設值,不傳預設為字串

* @returns */

function $catch(data, keystr, def = '')

if (typeof data !== 'object'||data===null

) `, 'color:orange',

'');

return

def }

if (type(keystr) !== 'string') `,

'color:orange', '');

return

def }

if (keystr === '')

let keyarr = keystr.split('.')

let _data =data

let _index = 0

for (let index = 0; index < keyarr.length; index++) 為 "undefined" !`,

'color:orange', '');

break

; }

}return _data ||def

}

python介面測試返回資料為字典取值

引言 介面測試通常需要校驗返回資料跟預期結果是否一致,這個時候如果返回資料為字典,那麼我們要拿到我們想要的key對應的values時,需巧妙的運用dict.keys dict.values 和for迴圈,以及列表相關知識點。例項這是我調介面返回的資料,該資料為dict型別,我的目標是要拿到accou...

mysql 多條資料中,分組獲取值最大的資料記錄

摘要 多條紀錄中,幾個字段相同,但是其中乙個或者多個字段不同,則去該字段最大 這裡只有乙個不同 源資料 目的是移除 在同一天中只能存在一天資料,則取審核日期最大,資料庫指令碼如下 select p.biztype,pdt.weekdate,pdt.bizdatedtl,max p.audittime...

async await 解決資料非同步獲取

在react元件中,也比較一下promise和async await的方法異同。傳統地使用promise import react,from react import from react redux import from actions post class posteditform exten...