作爲替代包裹鏈展開模式(沒有內在的錯誤,但替代品總是有趣的)還有另一種方法可以檢查。
嘗試利用_.flow
。
這個想法是flow
內部的每個函數都會接收到前一個函數的輸出,這正是您所需要的。 一個例子,給出這樣的數據:
var foundUser = {
charData: []
};
var rows = [{ok: 1, blah: 'nope'}];
使用Lodash FP
我們可以通過數據作爲最後一個參數。這個特性以及Lodash/fp中每個方法的自動壓縮使得我們在編寫函數時更加輕鬆。這意味着我們可以有這樣的簡潔和表現代碼:
_.flow(
_.assign(rows[0]),
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
使用標準版Lodash我們要巴結自己使用_.partial
這些功能,代碼一定會看起來不那麼簡潔,但它仍然是可能做到所以:
_.flow(
_.partialRight(_.assign, rows[0]),
_.partialRight(_.omit, 'blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
使用流而不是鏈接的一大好處是,你可以輕鬆地與自己的自定義功能混合Lodash方法,因爲 - 因爲說 - 他們需要的是菊ST的數據作爲輸入和作爲輸出數據,而不是其他:
const yourFunction = d => ({ ...d, yourProp: 4 });
_.flow(
_.assign(rows[0]),
yourFunction,
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1, yourProp: 4}
這使得函數組合更容易,更靈活,可以說,自然會導致更富有表現力的代碼。
另一件要注意的事情。如果您僅安裝和導入您使用的Lodash方法,則只需添加flow
包,而不是像鏈接那樣添加整個Lodash庫。
npm i --save lodash.flow
Vs的
npm i --save lodash
也許在許多實際應用中可以忽略不計的優勢在哪裏有Lodash的完整版本是沒有問題的,可以說是更容易維護最新的,但萬一很方便您正在編寫一個庫或腳本,將作爲第三方工具使用。在這種情況下,您將能夠在分佈式大小方面保持較低的佔用空間。
Lodash方法文檔:
值得一看
兩篇文章:
NB - 第二篇文章的標題是在我看來有點嚴厲,但不要跳過它,內容的確很翔實。
其他一些注意事項:
例子:
_.flow(
_.assign(rows[0]), // #1st to execute
yourFunction, // #2
_.omit('blah'), // #3
)(foundUser);
// is the same as...
_.flowRight(
_.omit('blah'), // #3rd to execute
yourFunction, // #2
_.assign(rows[0]), // #1
)(foundUser);
https://lodash.com/docs#_ – zerkms
https://lodash.com/docs#chain –