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
=>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介面安裝起來很方便。也比較牢固,拆卸都比...