js中有沒有什麼庫能安全的對物件屬性進行訪問 比如a b c d?

時間 2021-05-31 01:01:49

1樓:袁野

直接手寫唄,S站上tocqueville使用者寫的版本感覺特別簡潔~如下:

function

_try

(func

,fallbackValue

)catch(e

)}用法 _try(() => user.address.postcode, 'none')

要是還想處理最後一級正好是null或者undefined,以及只處理空值被級聯訪問的異常(目前沒有見過除了TypeError以外的)的話,可以參考我更新的版本:

/*** Try to get value. If encounter a null, fallback value is returned

* @template T

* @param func callback to get value

* @param [fallbackValue] fallback value

* @return the value got

** @example

* _try(() => user.book.category, 'uncategorized')

*/function

_try

(func

,fallbackValue

)catch(e

)else}}

使用JSDoc寫明了泛型,vscode可以正常型別推斷,目前唯一的隱患感覺就是內部未處理的TypeError 不能繼續丟擲了吧。

TypeScript版本:

function

_try

(func:()

=>T,

fallbackValue?: T

)catch(e

)else}}

2樓:[已重置]

R.pathOr('N/A', ['a', 'b'], }); //=> 2

R.pathOr('N/A', ['a', 'b'], }); //=> "N/A"

附上實現

var pathOr = curry(function pathOr_(defval,ps,obj)else if(ps.length == 0)else if(isString(ps))else if (isArray(ps))else

})非curried版本

function pathOr(defval,ps,obj)else if(ps.length == 0)else if(isString(ps))else if (isArray(ps))else

}來個Object Monad ? (瞎意淫的

a = Object(}}).bind(obj=>obj.a).bind(a=>a.b).bind(b=>b.c)

3樓:楊夕

const get = (from, ...selectors) =>

[...selectors].map(s =>s

.replaceg, '.$1.

'split('.'filter(t => t !== ''reduce((prev, cur) => prev && prev[cur], from)

);const obj = }, target: [1, 2, ] };

get(obj, 'selector.to.val', 'target[0]', 'target[2].aལval to select', 1, 'test']

原始碼來自 30 seconds of code

4樓:信鑫-King

blakeembrey/getvalue

import

from

'getvalue'

const

obj=],e

:2}}

}get

(obj

,"a.b.c.0.d"

)//=> 1

get(

obj,

"a.b.c.e"

)//=> 2

5樓:謝然

大家都在說get,我來用三種方法給你實現一下get,就是我上課講的三種方法

注意這裡path是乙個陣列

// 方法一:迴圈

function

get1

(obj

,path

)else

}return

obj}

// 方法二:遞迴

function

get2

(obj

,path

)else

}else

}// 方法三:reduce

function

get3

(obj

,path

)else

},obj)}

不過我還是喜歡這種簡單粗暴的:

trycatch(e)

6樓:justjavac

optional chaining 已經進入 stage 1 了。Ruby/Swift/C# 表示:「怎麼這麼晚才來抄啊」

新手倒庫停車,有沒有什麼技巧?

電氣學長 1 進入平行式停車位 如圖所示,讓車輛與停車位邊線平行,車身右側與右方車輛相距約0.5m,倒車行駛,當右後視鏡與右方車輛前後車門之間的立柱 B柱 對齊時,將轉向盤向右轉至極限。待車身轉過45 時,將轉向盤向左轉至極限,車身完全進入停車位時,回正轉向盤並停車。2 進入傾斜式停車位 假如傾斜式...

有沒有什麼小眾的安全駕駛經驗?

hfychn 1.有足夠距離時,加速變道 不要減速 距離不夠的時候,減速等待別人讓道。2.變道時先打轉向燈,如果變道車道到車開始加速前衝,就等一會讓他過去,如果他跟你併排後又放慢車速,就減速等後面車讓道。3.在超車的時候,和前車併排時,油門松一下,看看有沒有其他行人車輛衝出來,再加速超越。4.前車在...

有沒有什麼價效比搞的嬰兒安全座椅?

kiko 從孩子出生,就開始研究給孩子買安全座椅,一直在挑選,不知道買那個好,首先研究安全性,又研究舒適性,挑選的眼花繚亂啊,最後選擇了這款安全座椅,雙重的安全認證讓我放心,座椅舒適度也可以,我們是21款的LEVIN,這個安全座椅三種介面都可以用,isofix介面安裝起來很方便。也比較牢固,拆卸都比...