[英]How to convert Lodash chain to modular imports
我有一個對象數組,我通過 lodash 鏈傳遞這些對象以獲得所需的 output。但我想使代碼模塊化,而不是使用_
。 我想導入特定功能以減少導入大小,我搜索了 lodash 文檔,但找不到任何有用的東西。
import _ from 'lodash'
let TransactionList = _(TransactionData)
.groupBy('hash')
.map(_.spread(_.merge))
.value()
我試過了,但這也不管用。
import { flow, groupBy, map, merge, spread } from 'lodash'
let TransactionList = flow(
groupBy('hash'),
map(spread(merge))
)(TransactionData)
Lodash 的函數沒有柯里化,函數期望數據作為第一個參數。 要使用流,您需要使用箭頭 function 包裝期望多個參數的函數,並自己傳遞數據(本示例中的arr
或groups
):
import { flow, groupBy, map, merge, spread } from 'lodash'
const TransactionList = flow(
arr => groupBy(arr, 'hash'),
groups => map(groups, spread(merge))
)(TransactionData)
Lodash 有一個已棄用的功能版本 (lodash/fp) 解決了這個問題,當使用lodash/fp時,您的代碼(稍作改動)可以工作:
import { flow, groupBy, map, mergeAll } from 'lodash'
const TransactionList = flow(
groupBy('hash'),
map(mergeAll)
)(TransactionData)
關於僅導入特定函數,您可以使用lodash-es ,將 Lodash 庫導出為 ES 模塊。
例如:
import { pad, toUpper } from 'lodash-es';
console.log(pad(toUpper('hello world'), 17, '*')); // ***HELLO WORLD***
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.