我在 Typescript 中決議一個復雜的物件,所以有類似的東西:
const a = reply['price']['value']['total']['value'];
我喜歡確保所有元素都在鏈中定義,否則,a=0如果某些鏈鍵實際上未定義,它應該設定并且不觸發例外。
什么是合適的語法?
uj5u.com熱心網友回復:
如果您使用的是現代 JS,則可以使用無效合并和可選鏈接
const a = reply?.['price']?.['value']?.['total']?.['value'] ?? 0;
盡量避免使用||而不是,因為如果最終值是任何假值,比如or ??,那會給你。00false
如果您不想使用無效合并,則可以執行此操作,達到相同的效果。
const a = reply?.['price']?.['value']?.['total']?.['value'] ? reply['price']['value']['total']['value'] : 0;
uj5u.com熱心網友回復:
如果您不能使用 @nullptr 的答案,我建議為此目的創建一個函式:
function getObjectNestedValue2(obj, keys, defaultValue) {
let currObjOrValue = obj;
keys.forEach(key => {
if (!currObjOrValue.hasOwnProperty(key)) {
currObjOrValue = defaultValue;
return;
}
currObjOrValue = currObjOrValue[key];
});
return currObjOrValue;
}
然后你這樣稱呼它:
const a = getObjectNestedValue(reply, ['price', 'value', 'total', 'value'], 0);
干杯
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496685.html
標籤:javascript 打字稿
