4f8be6293df9cd14da4c9c048c89ab1aacadfc5f
Windychen Utils
轻量级 JavaScript/TypeScript 工具库,提供对象、数组、存储等常用扩展方法。
安装
npm install windychen-untils
使用
Node.js / Bun.js
require('windychen-untils');
// Object 扩展
const obj = { a: { b: { c: 1 } } };
obj.getPro('a.b.c'); // 1
obj.setPro('x.y.z', 'hello');
// Array 扩展
[{ id: '1' }, { id: '2' }].findPro('id', '2');
浏览器
<script src="dist/windychen-utils.js"></script>
ES Module
import from 'windychen-untils/dist/windychen-utils.esm.js';
API 参考
Object
| 方法 | 说明 | 示例 |
|---|---|---|
getPro(path, default?) |
安全获取嵌套属性,支持特殊键名 | obj.getPro('a.b.c') / obj.getPro("['x.y'].z") |
setPro(path, value) |
设置嵌套路径值,自动创建中间对象 | obj.setPro('foo.bar', 1) |
路径格式支持:
- 普通点分隔:
'a.b.c' - 特殊键名:
"['key.with.dot']" - 混合:
"['a.b'].c['d.e']"
Array
| 方法 | 说明 | 示例 |
|---|---|---|
findPro(fn | key, val?) |
增强查找 | arr.findPro('id', '2') |
filterPro(fn | key, val?) |
增强过滤 | arr.filterPro('user.name', 'Alice') |
findIndexPro(fn | key, val?) |
增强索引查找 | arr.findIndexPro('status', 1) |
findLastPro(fn | key, val?) |
从末尾查找 | arr.findLastPro('type', 'b') |
| somePro(fn | key, val?) | 任一匹配 | arr.somePro('active', true) |
| everyPro(fn | key, val?) | 全部匹配 | arr.everyPro('valid', true) |
三种调用方式:
// 回调函数(同原生)
arr.findPro(item => item.id > 1);
// 单值精确匹配
['aa', 'bb'].findPro('bb');
// key-value 匹配(支持嵌套路径)
[{ user: { name: 'Bob' } }].findPro('user.name', 'Bob');
Storage(浏览器环境)
自动选择存储后端:
- 支持 IndexedDB → 使用
IDBStorage - 仅支持 localStorage → 使用
ILocalStorage(内存缓存)
import storage from 'windychen-untils';
await storage.set('key', { data: 123 });
await storage.get('key', null); // { data: 123 }
构建
npm run build # 打包全部 (CJS + ESM + UMD)
npm run build:cjs # CommonJS
npm run build:esm # ES Module
npm run build:umd # UMD (浏览器)
npm test # 运行测试
License
ISC
Description
Languages
JavaScript
72.5%
HTML
27.5%