This commit is contained in:
2025-12-29 15:30:30 +08:00
commit 6ba2e23a77
7 changed files with 557 additions and 0 deletions

69
README.md Normal file
View File

@@ -0,0 +1,69 @@
# JS Filter
轻量、易读、可解析、可执行的类 SQL 过滤语法,用于 JavaScript 数组过滤。
## 语法特性
- **WHERE**: 条件过滤
- **ORDER BY**: 排序
- **LIMIT**: 限制结果数量
- **操作符**: `=`, `!=`, `>`, `<`, `>=`, `<=`, `IN`, `CONTAINS`
- **逻辑**: `AND`, `OR`
## 语法示例
```javascript
// 基础过滤
filter(users, "WHERE metadata.type = 'user'");
// 多条件
filter(users, "WHERE metadata.tags CONTAINS 'premium' AND metadata.region = 'beijing'");
// 排序
filter(users, "WHERE metadata.type = 'user' ORDER BY metadata.created_at DESC");
// 限制数量
filter(users, "WHERE metadata.type = 'user' ORDER BY metadata.created_at DESC LIMIT 10");
// IN 操作
filter(users, "WHERE metadata.region IN ['beijing', 'shanghai']");
```
## 使用方法
```javascript
import { filter } from '@kevisual/js-filter';
const users = [
{
metadata: {
tags: ['premium', 'active'],
type: 'user',
region: 'beijing',
created_at: '2024-03-15T10:00:00Z',
},
},
{
metadata: {
tags: ['free'],
type: 'admin',
region: 'shanghai',
created_at: '2024-01-10T09:00:00Z',
},
},
{
metadata: {
tags: ['enterprise', 'premium'],
type: 'user',
region: 'guangzhou',
created_at: '2024-04-05T12:00:00Z',
},
},
];
// 查找 premium 用户
const premiumUsers = filter(users, "WHERE metadata.tags CONTAINS 'premium'");
// 查找北京的用户,按创建时间倒序
const beijingUsers = filter(users, "WHERE metadata.region = 'beijing' ORDER BY metadata.created_at DESC");
```