返回首页
最新
你好,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)
感谢你们的关注!