返回首页
最新
你好,HN,
我想分享一个我正在开发的库,名为:
fp-filters - 一个精心挑选的包含130多个常用过滤函数的集合,这些函数采用函数式编程风格编写(并可以使用)。
为什么我会构建这个库:
我注意到在多个代码库中,开发者倾向于反复编写相同或相似的过滤函数。很多时候,这些函数都是内联的,影响了可读性。
我意识到它们大多数实际上做的事情是相似的,因此可以将它们隔离、整理并单独维护。
fp-filters 提供了130多个可组合的、无点的过滤函数,使数据转换管道更加可读和易于维护。
所有函数都是谓词,可以作为谓词使用,但在用作过滤器时表现更佳。
主要特点:
1. 纯函数式方法,无副作用
2. 可组合的谓词(通过 fp-booleans 提供的与、或、非组合器)
3. 常见过滤模式作为可重用函数
4. 通过 TypeScript 定义实现类型安全
5. 同时以 esm 和 cjs 格式导出
6. 零依赖,体积小
7. 单独导出,无需树摇
8. 100% 测试覆盖率
示例用法:
```javascript
const input = [[1, 2, 3], [2, 4], [0, 4, 8, 16]];
// JS
input.filter((array) => array.every((element) => element % 2 === 0));
// fp-filters
input.filter(everyElement(isEven));
```
```javascript
// JS
dates.filter((date) => {
const day = date.getDay();
return day === 0 || day === 6;
});
// fp-filters
dates.filter(isWeekend);
```
```javascript
// JS
array.filter((arg) => arg.length > 0);
// fp-filters
array.filter(isNotEmpty);
```
与其他库的不同之处:
与 lodash/fp 或 ramda 不同,fp-filters 专注于数组过滤模式,强调在复杂数据转换中的可读性。它旨在让已经熟悉 JavaScript 数组方法的开发者直观使用,同时提供函数组合的好处。
该项目采用 MIT 许可证,欢迎贡献。我期待听到 HN 社区的反馈。
链接:
npm: [https://www.npmjs.com/package/fp-filters](https://www.npmjs.com/package/fp-filters)
GitHub: [https://github.com/Oaxoa/fp-filters](https://github.com/Oaxoa/fp-filters)
文档: [https://oaxoa.github.io/fp-filters](https://oaxoa.github.io/fp-filters)
感谢你的关注!