javascript - Lodash 连接两种方法
问题描述
是否可以连接两个 lodash 方法?在我的情况下 uniqBy 和 sortBy
例子:
const uniquePotentialClients = _.uniqBy(
[...potentialClients],
uniqueContact => uniqueContact.phoneNumbers[0].number,
);
const sortPotentialClients = _.sortBy(
[...potentialClients],
uniqueContact => uniqueContact.givenName,
);
是否有可能两个将这两种方法应用于一个集合?
解决方案
你有两个选择:
链接
这包装了您正在处理的值,然后您可以在不提供参数的情况下对其进行更多操作。完成后.value()
提取最终值。
const result = _.chain([...potentialClients])
.uniqBy(uniqueContact => uniqueContact.phoneNumbers[0].number)
.sortBy(uniqueContact => uniqueContact.givenName)
.value();
使用功能组合
const uniqFn = _.uniqBy(uniqueContact => uniqueContact.phoneNumbers[0].number);
const sortFn = _.sortBy(uniqueContact => uniqueContact.givenName);
const composedFn = _.flow(uniqFn, sortFn);
const result = composedFn([...potentialClients]);
如果您使用的是 Lodash 的 FP 版本,则此实现是可能的。如果你不是,那么你必须对函数应用修饰符来翻转参数并使它们柯里化,这将使它们对函数式编程友好,类似于 lodash/fp 所做的。以下是如何做到这一点的示例:
//_.curry requires the arity to be declared, passing 2 satisfies both these functions
const makeFpFriendly = f => _.curry(_.flip(f), 2);
const uniqByFpFriendly = makeFpFriendly(_.uniqBy);
const sortByFpFriendly = makeFpFriendly(_.sortBy);
推荐阅读
- python - 使用 Pandas 查找特定列的“最大值”,然后输出该 VALUE 以及同一行中的相应 ITEM
- javascript - 将带有 get 请求的变量传递给 PHP
- javascript - 更改字段值时的javascript ROWs INDEX
- postman - 如何从邮递员的html响应中提取href值
- python - 在 Python 中针对 OpenAPI YAML 验证请求
- javascript - 将 Web 应用程序部署到 Heroku 时找不到 Express 模块
- r - R中向量上标的含义
- r - 在 R 中按组汇总结果
- java - 如何从 Spring WebFlux 反应式中的 ServerRequest 对象获取请求正文?
- java - 如何将 tiff 文件格式的 Oracle Blob 转换为 jpeg 文件格式的 Blob