簡體   English   中英

如何將 Lodash 鏈轉換為模塊化導入

[英]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 包裝期望多個參數的函數,並自己傳遞數據(本示例中的arrgroups ):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM