繁体   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